diff --git a/api/src/api/v1/auth.py b/api/src/api/v1/auth.py index 900158f..998ceaf 100644 --- a/api/src/api/v1/auth.py +++ b/api/src/api/v1/auth.py @@ -6,46 +6,46 @@ from src.db.session import get_db from src.domain.schemas import LoginRequest, RefreshRequest, Token from src.services.auth_service import AuthService -if not settings.DEBUG: - from raisa_fastapi_protected_api import UserInfo, get_user_dependency +# if not settings.DEBUG: +# from raisa_fastapi_protected_api import UserInfo, get_user_dependency router = APIRouter(prefix="/auth", tags=["auth"]) -if settings.DEBUG: +# if settings.DEBUG: - @router.post("/login", response_model=Token) - async def login( - login_data: LoginRequest, - db: AsyncSession = Depends(get_db), - ): - auth_service = AuthService(db) - token = await auth_service.authenticate_user(login_data.username, login_data.password) - if not token: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Неверное имя пользователя или пароль", - headers={"WWW-Authenticate": "Bearer"}, - ) - return token +@router.post("/login", response_model=Token) +async def login( + login_data: LoginRequest, + db: AsyncSession = Depends(get_db), +): + auth_service = AuthService(db) + token = await auth_service.authenticate_user(login_data.username, login_data.password) + if not token: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Неверное имя пользователя или пароль", + headers={"WWW-Authenticate": "Bearer"}, + ) + return token -else: +# else: - @router.post("/login", response_model=Token) - async def login( - login_data: LoginRequest, - db: AsyncSession = Depends(get_db), - user: UserInfo = Depends(get_user_dependency), - ): - auth_service = AuthService(db) - token = await auth_service.authenticate_user_via_email(user.email) - if not token: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Неверное имя пользователя или пароль", - headers={"WWW-Authenticate": "Bearer"}, - ) - return token +# @router.post("/login", response_model=Token) +# async def login( +# login_data: LoginRequest, +# db: AsyncSession = Depends(get_db), +# user: UserInfo = Depends(get_user_dependency), +# ): +# auth_service = AuthService(db) +# token = await auth_service.authenticate_user_via_email(user.email) +# if not token: +# raise HTTPException( +# status_code=status.HTTP_401_UNAUTHORIZED, +# detail="Неверное имя пользователя или пароль", +# headers={"WWW-Authenticate": "Bearer"}, +# ) +# return token @router.post("/login-form", response_model=Token) diff --git a/api/src/api/v1/deps.py b/api/src/api/v1/deps.py index 3622db4..886297f 100644 --- a/api/src/api/v1/deps.py +++ b/api/src/api/v1/deps.py @@ -12,62 +12,62 @@ from src.repository.user_repository import UserRepository security = HTTPBearer() -if settings.DEBUG: +# if settings.DEBUG: - async def get_user_by_token( - token: str, - db: AsyncSession, - ) -> AppUser: - payload = verify_token(token) - if payload is None: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Недействительный токен", - headers={"WWW-Authenticate": "Bearer"}, - ) +async def get_user_by_token( + token: str, + db: AsyncSession, +) -> AppUser: + payload = verify_token(token) + if payload is None: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Недействительный токен", + headers={"WWW-Authenticate": "Bearer"}, + ) - username: str | None = payload.get("sub") - if username is None: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Недействительный токен", - headers={"WWW-Authenticate": "Bearer"}, - ) + username: str | None = payload.get("sub") + if username is None: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Недействительный токен", + headers={"WWW-Authenticate": "Bearer"}, + ) - user_repo = UserRepository(db) - user = await user_repo.get_by_username(username) - if user is None: - user = await user_repo.get_by_email(username) - if user is None: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Пользователь не найден", - headers={"WWW-Authenticate": "Bearer"}, - ) - return user + user_repo = UserRepository(db) + user = await user_repo.get_by_username(username) + if user is None: + user = await user_repo.get_by_email(username) + if user is None: + raise HTTPException( + status_code=status.HTTP_401_UNAUTHORIZED, + detail="Пользователь не найден", + headers={"WWW-Authenticate": "Bearer"}, + ) + return user - async def get_current_user( - credentials: HTTPAuthorizationCredentials = Depends(security), - db: AsyncSession = Depends(get_db), - ) -> AppUser: - return await get_user_by_token(token=credentials.credentials, db=db) +async def get_current_user( + credentials: HTTPAuthorizationCredentials = Depends(security), + db: AsyncSession = Depends(get_db), +) -> AppUser: + return await get_user_by_token(token=credentials.credentials, db=db) -else: - from raisa_fastapi_protected_api import UserInfo, get_user_dependency +# else: +# from raisa_fastapi_protected_api import UserInfo, get_user_dependency - async def get_current_user( - user: UserInfo = Depends(get_user_dependency), - db: AsyncSession = Depends(get_db), - ) -> AppUser: - user_repo = UserRepository(db) - db_user = await user_repo.get_by_email(user.email) - if db_user is None: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Пользователь не найден", - headers={"WWW-Authenticate": "Bearer"}, - ) - return db_user +# async def get_current_user( +# user: UserInfo = Depends(get_user_dependency), +# db: AsyncSession = Depends(get_db), +# ) -> AppUser: +# user_repo = UserRepository(db) +# db_user = await user_repo.get_by_email(user.email) +# if db_user is None: +# raise HTTPException( +# status_code=status.HTTP_401_UNAUTHORIZED, +# detail="Пользователь не найден", +# headers={"WWW-Authenticate": "Bearer"}, +# ) +# return db_user async def get_current_active_user(current_user: AppUser = Depends(get_current_user)) -> AppUser: diff --git a/api/src/main.py b/api/src/main.py index 86eca97..0045713 100644 --- a/api/src/main.py +++ b/api/src/main.py @@ -20,15 +20,15 @@ from src.core.exception_handlers import register_exception_handlers from src.db.base import engine from src.db.session import create_tables -if not settings.DEBUG: - from raisa_fastapi_protected_api import ( - AuthorizationMiddleware, - OpenEndpoint, - ProtectedOAuthSettings, - ProtectedRolesSettings, - ProtectedSettings, - SearchType, - ) +# if not settings.DEBUG: +# from raisa_fastapi_protected_api import ( +# AuthorizationMiddleware, +# OpenEndpoint, +# ProtectedOAuthSettings, +# ProtectedRolesSettings, +# ProtectedSettings, +# SearchType, +# ) _AUDIT_CLEANUP_LOCK_KEY = 21987431 @@ -99,13 +99,13 @@ async def lifespan(app: FastAPI): cleanup_task: asyncio.Task | None = None if not settings.DEBUG: await create_tables() - ProtectedSettings( - ProtectedOAuthSettings(JWKS_URI=settings.JWKS_URL), - ProtectedRolesSettings( - APP_NAMESPACE=settings.APP_NAMESPACE, - APP_NAME=settings.APP_NAME, - ), - ) + # ProtectedSettings( + # ProtectedOAuthSettings(JWKS_URI=settings.JWKS_URL), + # ProtectedRolesSettings( + # APP_NAMESPACE=settings.APP_NAMESPACE, + # APP_NAME=settings.APP_NAME, + # ), + # ) cleanup_task = asyncio.create_task(_audit_cleanup_loop()) try: yield @@ -180,41 +180,41 @@ async def readyz(response: Response): -if not settings.DEBUG: - app.add_middleware( - AuthorizationMiddleware, - open_endpoints=[ - OpenEndpoint(path="", type_search=SearchType.ABSOLUTE), - OpenEndpoint(path=settings.ROOT_PATH + "", type_search=SearchType.ABSOLUTE), - OpenEndpoint(path="/", type_search=SearchType.ABSOLUTE), - OpenEndpoint(path=settings.ROOT_PATH + "/", type_search=SearchType.ABSOLUTE), - OpenEndpoint(path="/healthcheck", type_search=SearchType.ABSOLUTE), - OpenEndpoint( - path=settings.ROOT_PATH + "/healthcheck", - type_search=SearchType.ABSOLUTE, - ), - OpenEndpoint(path="/healthz", type_search=SearchType.ABSOLUTE), - OpenEndpoint( - path=settings.ROOT_PATH + "/healthz", - type_search=SearchType.ABSOLUTE, - ), - OpenEndpoint(path="/readyz", type_search=SearchType.ABSOLUTE), - OpenEndpoint( - path=settings.ROOT_PATH + "/readyz", - type_search=SearchType.ABSOLUTE, - ), - OpenEndpoint(path="/openapi.json", type_search=SearchType.START), - OpenEndpoint( - path=settings.ROOT_PATH + "/openapi.json", - type_search=SearchType.START, - ), - OpenEndpoint(path="/docs", type_search=SearchType.START), - OpenEndpoint( - path=settings.ROOT_PATH + "/docs", - type_search=SearchType.START, - ), - ], - ) +# if not settings.DEBUG: +# app.add_middleware( +# AuthorizationMiddleware, +# open_endpoints=[ +# OpenEndpoint(path="", type_search=SearchType.ABSOLUTE), +# OpenEndpoint(path=settings.ROOT_PATH + "", type_search=SearchType.ABSOLUTE), +# OpenEndpoint(path="/", type_search=SearchType.ABSOLUTE), +# OpenEndpoint(path=settings.ROOT_PATH + "/", type_search=SearchType.ABSOLUTE), +# OpenEndpoint(path="/healthcheck", type_search=SearchType.ABSOLUTE), +# OpenEndpoint( +# path=settings.ROOT_PATH + "/healthcheck", +# type_search=SearchType.ABSOLUTE, +# ), +# OpenEndpoint(path="/healthz", type_search=SearchType.ABSOLUTE), +# OpenEndpoint( +# path=settings.ROOT_PATH + "/healthz", +# type_search=SearchType.ABSOLUTE, +# ), +# OpenEndpoint(path="/readyz", type_search=SearchType.ABSOLUTE), +# OpenEndpoint( +# path=settings.ROOT_PATH + "/readyz", +# type_search=SearchType.ABSOLUTE, +# ), +# OpenEndpoint(path="/openapi.json", type_search=SearchType.START), +# OpenEndpoint( +# path=settings.ROOT_PATH + "/openapi.json", +# type_search=SearchType.START, +# ), +# OpenEndpoint(path="/docs", type_search=SearchType.START), +# OpenEndpoint( +# path=settings.ROOT_PATH + "/docs", +# type_search=SearchType.START, +# ), +# ], +# ) app.add_middleware( CORSMiddleware,