Spaces:
Sleeping
Sleeping
Upload app/api/auth.py
Browse files- app/api/auth.py +18 -0
app/api/auth.py
CHANGED
|
@@ -243,3 +243,21 @@ async def get_me(
|
|
| 243 |
value={"user": user_data},
|
| 244 |
statusCode=200,
|
| 245 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 243 |
value={"user": user_data},
|
| 244 |
statusCode=200,
|
| 245 |
)
|
| 246 |
+
|
| 247 |
+
|
| 248 |
+
async def get_current_admin_user(
|
| 249 |
+
user_id: int = Depends(get_current_user),
|
| 250 |
+
db: Session = Depends(get_db),
|
| 251 |
+
) -> User:
|
| 252 |
+
user = db.query(User).filter(User.id == user_id).first()
|
| 253 |
+
if not user:
|
| 254 |
+
raise HTTPException(
|
| 255 |
+
status_code=status.HTTP_404_NOT_FOUND,
|
| 256 |
+
detail="User not found",
|
| 257 |
+
)
|
| 258 |
+
if user.role != UserRole.ADMIN:
|
| 259 |
+
raise HTTPException(
|
| 260 |
+
status_code=status.HTTP_403_FORBIDDEN,
|
| 261 |
+
detail="Admin privileges required",
|
| 262 |
+
)
|
| 263 |
+
return user
|