hisham-cmd commited on
Commit
120afd0
·
verified ·
1 Parent(s): 9aa3e3c

Upload app/api/auth.py

Browse files
Files changed (1) hide show
  1. app/api/auth.py +29 -0
app/api/auth.py CHANGED
@@ -95,6 +95,35 @@ async def login(request: LoginRequest, db: Session = Depends(get_db)):
95
  )
96
 
97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  @router.post("/google", response_model=AuthResponse)
99
  async def google_login(request: GoogleLoginRequest, db: Session = Depends(get_db)):
100
  """Authenticate user with Google ID token."""
 
95
  )
96
 
97
 
98
+ @router.post("/admin-login", response_model=AuthResponse)
99
+ async def admin_login(request: LoginRequest, db: Session = Depends(get_db)):
100
+ user = db.query(User).filter(User.email == request.email).first()
101
+
102
+ # Check general credentials
103
+ if not user or not user.password_hash or not verify_password(request.password, user.password_hash):
104
+ raise HTTPException(
105
+ status_code=status.HTTP_401_UNAUTHORIZED,
106
+ detail="Invalid email or password",
107
+ )
108
+
109
+ # Crucial step: Verify admin role
110
+ if user.role != UserRole.ADMIN:
111
+ raise HTTPException(
112
+ status_code=status.HTTP_403_FORBIDDEN,
113
+ detail="Access denied. Admin privileges required.",
114
+ )
115
+
116
+ tokens = _generate_tokens(user.id)
117
+ user_data = UserResponse.model_validate(user).model_dump()
118
+ user_data["created_at"] = user_data["created_at"].isoformat()
119
+
120
+ return AuthResponse(
121
+ isSuccess=True,
122
+ value={"tokens": tokens, "user": user_data},
123
+ statusCode=200,
124
+ )
125
+
126
+
127
  @router.post("/google", response_model=AuthResponse)
128
  async def google_login(request: GoogleLoginRequest, db: Session = Depends(get_db)):
129
  """Authenticate user with Google ID token."""