diff options
author | Parker <contact@pkrm.dev> | 2024-11-10 16:36:16 -0600 |
---|---|---|
committer | Parker <contact@pkrm.dev> | 2024-11-10 16:36:16 -0600 |
commit | 691aa744a0398f185b3ca98a36fbd83806c7786c (patch) | |
tree | 7840f31c30bb6eda903abd6bbf4dbfb2ac590966 /app/routes/auth_routes.py | |
parent | 8941213c8d94f3ad84e07e467e78105dc7fed734 (diff) |
TOO MUCH STUFF
Diffstat (limited to 'app/routes/auth_routes.py')
-rw-r--r-- | app/routes/auth_routes.py | 73 |
1 files changed, 0 insertions, 73 deletions
diff --git a/app/routes/auth_routes.py b/app/routes/auth_routes.py deleted file mode 100644 index ceb68b1..0000000 --- a/app/routes/auth_routes.py +++ /dev/null @@ -1,73 +0,0 @@ -from fastapi import Depends, APIRouter, status, HTTPException -from fastapi.security import OAuth2PasswordRequestForm -from fastapi.responses import Response, JSONResponse -from datetime import timedelta -from typing import Annotated - -from app.util.authentication import ( - create_access_token, - authenticate_user, - refresh_get_current_user, -) -from app.schemas.auth_schemas import Token, User -from app.util.db_dependency import get_db - - -router = APIRouter(prefix="/auth", tags=["auth"]) - - -@router.post("/token", summary="Authenticate and get an access token") -async def login_for_access_token( - form_data: Annotated[OAuth2PasswordRequestForm, Depends()], - response: Response, - db=Depends(get_db), -): - """ - Return an access token for the user, if the given authentication details are correct - """ - user = authenticate_user(db, form_data.username, form_data.password) - - if not user: - raise HTTPException( - status_code=status.HTTP_401_UNAUTHORIZED, - detail="Incorrect username or password", - headers={"WWW-Authenticate": "Bearer"}, - ) - access_token_expires = timedelta(minutes=1) - access_token = create_access_token( - data={"sub": user.id, "username": user.username, "refresh": False}, - expires_delta=access_token_expires, - ) - # Create a refresh token - just an access token with a longer expiry - # and more restrictions ("refresh" is True) - refresh_token_expires = timedelta(days=1) - refresh_token = create_access_token( - data={"sub": user.id, "username": user.username, "refresh": True}, - expires_delta=refresh_token_expires, - ) - response = JSONResponse(content={"success": True}) - response.set_cookie(key="access_token", value=access_token, httponly=True) - response.set_cookie( - key="refresh_token", value=refresh_token, httponly=True - ) - return response - - -# Full native JWT support is not complete in FastAPI yet :( -# Part of that is token refresh, so we must implement it ourselves -@router.post("/refresh") -async def refresh_access_token( - current_user: Annotated[User, Depends(refresh_get_current_user)], - response: Response, -) -> Token: - """ - Return a new access token if the refresh token is valid - """ - access_token_expires = timedelta(minutes=1) - access_token = create_access_token( - data={"sub": current_user.id, "refresh": False}, - expires_delta=access_token_expires, - ) - response = JSONResponse(content={"success": True}) - response.set_cookie(key="access_token", value=access_token, httponly=True) - return response |