Spaces:
Build error
Build error
| from typing import Generator | |
| from typing import Optional | |
| from fastapi import Cookie | |
| from fastapi import Depends, HTTPException, status | |
| from sqlalchemy.orm import Session | |
| import cruds | |
| import models | |
| from core import settings | |
| from core.db import SessionLocal | |
| from core.db import redis_session_client | |
| def get_db() -> Generator: | |
| try: | |
| db = SessionLocal() | |
| yield db | |
| finally: | |
| db.close() | |
| async def get_current_user( | |
| db: Session = Depends(get_db), | |
| session: str = Cookie(None), | |
| ) -> models.User: | |
| if not session: | |
| raise HTTPException( | |
| status_code=status.HTTP_403_FORBIDDEN, detail="Error ID: 137" | |
| ) # Invalid Session Token! | |
| user_id = await redis_session_client.client.get(session, encoding="utf-8") | |
| if not user_id: | |
| raise HTTPException( | |
| status_code=status.HTTP_403_FORBIDDEN, detail="Error ID: 138" | |
| ) # Invalid Session Token! | |
| user = cruds.crud_user.get(db, id=user_id) | |
| if not user: | |
| raise HTTPException(status_code=404, detail="Error ID: 139") # User not found | |
| return user | |
| def get_current_active_user( | |
| current_user: models.User = Depends(get_current_user), | |
| ) -> models.User: | |
| if not cruds.crud_user.is_active(current_user): | |
| raise HTTPException(status_code=400, detail="Error ID: 140") # Inactive user | |
| return current_user | |
| def get_current_active_ws_users( | |
| current_user: models.User = Depends(get_current_user), | |
| ) -> models.User: | |
| if not cruds.crud_user.is_active(current_user): | |
| raise HTTPException(status_code=400, detail="Error ID: 140") # Inactive user | |
| return current_user | |
| async def auth_token(token: Optional[str] = None): | |
| if token: | |
| return {"token": token} | |
| else: | |
| return None | |
| async def get_current_active_ws_user( | |
| db: Session = Depends(get_db), | |
| params: dict = Depends(auth_token), | |
| session: str = Cookie(None), | |
| ) -> models.User: | |
| if not (session or params): | |
| raise HTTPException( | |
| status_code=status.HTTP_403_FORBIDDEN, detail="Error ID: 137" | |
| ) # Invalid Session Token! | |
| if session: | |
| session_token = session | |
| else: | |
| session_token = params.get("token") | |
| user_id = await redis_session_client.client.get(session_token, encoding="utf-8") | |
| if not user_id: | |
| raise HTTPException( | |
| status_code=status.HTTP_403_FORBIDDEN, detail="Error ID: 138" | |
| ) # Invalid Session Token! | |
| user = cruds.crud_user.get(db, id=user_id) | |
| if not user: | |
| raise HTTPException(status_code=404, detail="Error ID: 139") # User not found | |
| return user | |
| def get_current_active_teacher( | |
| current_user: models.User = Depends(get_current_active_user), | |
| ) -> models.User: | |
| if current_user.user_type == settings.UserType.TEACHER.value: | |
| return current_user | |
| else: | |
| raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) | |
| def get_current_active_teacher_or_above( | |
| current_user: models.User = Depends(get_current_active_user), | |
| ) -> models.User: | |
| if current_user.user_type <= settings.UserType.TEACHER.value: | |
| return current_user | |
| else: | |
| raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED) | |
| def get_current_active_superuser( | |
| current_user: models.User = Depends(get_current_active_user), | |
| ) -> models.User: | |
| if not cruds.crud_user.is_superuser(current_user): | |
| raise HTTPException( | |
| status_code=400, detail="Error ID: 141" | |
| ) # The user doesn't have enough privileges | |
| return current_user | |
| def get_current_admin_or_above( | |
| current_user: models.User = Depends(get_current_active_user), | |
| ) -> models.User: | |
| if not current_user.user_type <= settings.UserType.ADMIN.value: | |
| raise HTTPException( | |
| status_code=400, detail="Error ID: 142" | |
| ) # The user doesn't have enough privileges | |
| return current_user | |