@@ -41,7 +41,7 @@ def get_json(url, method='GET', *args, **kwargs) -> httpx.Response:
4141
4242
4343class OAuth2Core :
44- """Base class (mixin) for all SSO providers """
44+ """OAuth2 flow handler of a certain provider. """
4545
4646 client_id : str = None
4747 client_secret : str = None
@@ -72,17 +72,14 @@ def oauth_client(self) -> WebApplicationClient:
7272 def get_redirect_uri (self , request : Request ) -> str :
7373 return urljoin (str (request .base_url ), "/oauth2/%s/token" % self .provider )
7474
75- async def get_login_url (self , request : Request ) -> Any :
75+ async def login_redirect (self , request : Request ) -> RedirectResponse :
7676 redirect_uri = self .get_redirect_uri (request )
7777 state = "" .join ([random .choice (string .ascii_letters ) for _ in range (32 )])
78- return self .oauth_client .prepare_request_uri (
78+ return RedirectResponse ( str ( self .oauth_client .prepare_request_uri (
7979 self .authorization_endpoint , redirect_uri = redirect_uri , state = state , scope = self .scope
80- )
81-
82- async def login_redirect (self , request : Request ) -> RedirectResponse :
83- return RedirectResponse (await self .get_login_url (request ), 303 )
80+ )), 303 )
8481
85- async def get_token_data (self , request : Request ) -> Optional [ Dict [ str , Any ]] :
82+ async def token_redirect (self , request : Request ) -> RedirectResponse :
8683 if not request .query_params .get ("code" ):
8784 raise OAuth2LoginError (400 , "'code' parameter was not found in callback request" )
8885 if not request .query_params .get ("state" ):
@@ -111,11 +108,7 @@ async def get_token_data(self, request: Request) -> Optional[Dict[str, Any]]:
111108 token = self .oauth_client .parse_request_body_response (json .dumps (response .json ()))
112109 data = self .standardize (self .backend .user_data (token .get ("access_token" )))
113110
114- return {** data , "scope" : self .scope }
115-
116- async def token_redirect (self , request : Request ) -> RedirectResponse :
117- token_data = await self .get_token_data (request )
118- access_token = request .auth .jwt_create (token_data )
111+ access_token = request .auth .jwt_create ({** data , "scope" : self .scope })
119112 response = RedirectResponse (self .redirect_uri or request .base_url )
120113 response .set_cookie (
121114 "Authorization" ,
0 commit comments