Skip to content

Commit 774512c

Browse files
committed
Merge dependent methods
1 parent 6d6c149 commit 774512c

File tree

1 file changed

+6
-13
lines changed

1 file changed

+6
-13
lines changed

src/fastapi_oauth2/core.py

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def get_json(url, method='GET', *args, **kwargs) -> httpx.Response:
4141

4242

4343
class 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

Comments
 (0)