1010from starlette .responses import RedirectResponse
1111
1212from .config import JWT_EXPIRES , OAUTH2_REDIRECT_URL
13- from .utils import create_access_token
13+ from .utils import jwt_create
1414
1515
1616class OAuth2LoginError (HTTPException ):
@@ -68,27 +68,22 @@ def refresh_token(self) -> Optional[str]:
6868 async def get_login_url (
6969 self ,
7070 * ,
71- redirect_uri : Optional [str ] = None ,
7271 params : Optional [Dict [str , Any ]] = None ,
7372 state : Optional [str ] = None ,
7473 ) -> Any :
7574 self .state = state
7675 params = params or {}
77- redirect_uri = redirect_uri or self .callback_url
78- if redirect_uri is None :
79- raise ValueError ("callback_url must be provided, either at construction or request time" )
8076 return self .oauth_client .prepare_request_uri (
81- self .authorization_endpoint , redirect_uri = redirect_uri , state = state , scope = self .scope , ** params
77+ self .authorization_endpoint , redirect_uri = self . callback_url , state = state , scope = self .scope , ** params
8278 )
8379
8480 async def login_redirect (
8581 self ,
8682 * ,
87- redirect_uri : Optional [str ] = None ,
8883 params : Optional [Dict [str , Any ]] = None ,
8984 state : Optional [str ] = None ,
9085 ) -> RedirectResponse :
91- login_uri = await self .get_login_url (redirect_uri = redirect_uri , params = params , state = state )
86+ login_uri = await self .get_login_url (params = params , state = state )
9287 return RedirectResponse (login_uri , 303 )
9388
9489 async def get_token_data (
@@ -97,7 +92,6 @@ async def get_token_data(
9792 * ,
9893 params : Optional [Dict [str , Any ]] = None ,
9994 headers : Optional [Dict [str , Any ]] = None ,
100- redirect_uri : Optional [str ] = None ,
10195 ) -> Optional [Dict [str , Any ]]:
10296 params = params or {}
10397 additional_headers = headers or {}
@@ -116,7 +110,7 @@ async def get_token_data(
116110 token_url , headers , content = self .oauth_client .prepare_token_request (
117111 self .token_endpoint ,
118112 authorization_response = current_url ,
119- redirect_url = redirect_uri or self .callback_url or current_path ,
113+ redirect_url = self .callback_url or current_path ,
120114 code = request .query_params .get ("code" ),
121115 ** params ,
122116 )
@@ -131,18 +125,17 @@ async def get_token_data(
131125 response = await session .get (url , headers = headers )
132126 content = response .json ()
133127
134- return content
128+ return { ** content , "scope" : self . scope }
135129
136130 async def token_redirect (
137131 self ,
138132 request : Request ,
139133 * ,
140134 params : Optional [Dict [str , Any ]] = None ,
141135 headers : Optional [Dict [str , Any ]] = None ,
142- redirect_uri : Optional [str ] = None ,
143136 ) -> RedirectResponse :
144- token_data = await self .get_token_data (request , params = params , headers = headers , redirect_uri = redirect_uri )
145- access_token = create_access_token (token_data )
137+ token_data = await self .get_token_data (request , params = params , headers = headers )
138+ access_token = jwt_create (token_data )
146139 response = RedirectResponse (OAUTH2_REDIRECT_URL )
147140 response .set_cookie (
148141 "Authorization" ,
0 commit comments