1
1
import logging
2
2
from typing import Awaitable
3
3
4
- from app .core .auth import set_user_session_cookie
5
- from app .core .config import IS_DEV_ENV
6
- from app .core .errors import CustomBaseError
7
- from app .data_models .models import UserSession
8
- from app .db .utils import get_db
9
- from app .github import (AccessDeniedError , authenticate_client , get_user ,
10
- github_oauth , sync_user_repositories )
11
- from app .service .user import user_service
12
4
from fastapi import APIRouter , Depends , HTTPException , Request , status
13
5
from fastapi .responses import RedirectResponse
14
6
from httpx import AsyncClient
15
7
from sqlalchemy .orm import Session
16
8
from starlette .datastructures import URL
17
9
10
+ from app .core .auth import set_user_session_cookie
11
+ from app .core .config import IS_DEV_ENV
12
+ from app .core .errors import CustomBaseError
13
+ from app .db .utils import get_db
14
+ from app .github import (
15
+ AccessDeniedError ,
16
+ authenticate_client ,
17
+ get_user ,
18
+ github_oauth ,
19
+ sync_user_repositories ,
20
+ )
21
+ from app .service .user import user_service
22
+
18
23
router = APIRouter ()
19
24
20
25
@@ -26,16 +31,15 @@ def __init__(self):
26
31
async def handle_auth_errors (thunk : Awaitable ):
27
32
try :
28
33
return await thunk
29
- except AccessDeniedError :
34
+ except AccessDeniedError as ade :
30
35
raise HTTPException (
31
- status_code = status .HTTP_403_FORBIDDEN ,
32
- detail = "Forbidden"
33
- )
36
+ status_code = status .HTTP_403_FORBIDDEN , detail = "Forbidden"
37
+ ) from ade
34
38
except CustomBaseError :
35
39
raise
36
40
except Exception as e :
37
41
logging .error (e )
38
- raise AuthenticationError ()
42
+ raise AuthenticationError () from e
39
43
40
44
41
45
async def authenticate_token_user (request : Request , token : str , db : Session ):
@@ -63,7 +67,8 @@ async def token_login(request: Request, db: Session = Depends(get_db)):
63
67
if access_token is not None :
64
68
token = access_token .split ("Bearer " )[1 ]
65
69
return await handle_auth_errors (
66
- authenticate_token_user (request , token , db ))
70
+ authenticate_token_user (request , token , db )
71
+ )
67
72
else :
68
73
raise CustomBaseError ("Missing required token" )
69
74
@@ -85,5 +90,5 @@ async def callback(request: Request, db: Session = Depends(get_db)):
85
90
86
91
set_user_session_cookie (request , user )
87
92
88
- response = RedirectResponse (url = f "/" )
93
+ response = RedirectResponse (url = "/" )
89
94
return response
0 commit comments