Skip to content

Commit

Permalink
Redirect on login partial implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
costrouc committed Aug 22, 2022
1 parent 673bef1 commit 9c9d5f8
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions conda-store-server/conda_store_server/server/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,7 @@ async def authenticate(self, request: Request):
def get_login_method(
self, request: Request, templates=Depends(dependencies.get_templates)
):
# follow next url
return templates.TemplateResponse(
"login.html",
{"request": request, "login_html": self.get_login_html(request, templates)},
Expand All @@ -362,7 +363,10 @@ async def post_login_method(
next: Optional[str] = None,
templates=Depends(dependencies.get_templates),
):
redirect_url = next or request.url_for("ui_list_environments")
request.session["next"] = request.session.get("next", next)
redirect_url = request.session.pop("next") or request.url_for(
"ui_list_environments"
)
response = RedirectResponse(redirect_url, status_code=303)
authentication_token = await self.authenticate(request)
if authentication_token is None:
Expand Down Expand Up @@ -576,18 +580,11 @@ def _oauth_callback_url(request: Request):
def get_oauth_callback_url(self, request: Request):
return utils.callable_or_value(self.oauth_callback_url, request)

login_html = Unicode(
"""
<div id="login" class="text-center">
<h1 class="h3 mb-3 fw-normal">Please sign in via OAuth</h1>
<a class="w-100 btn btn-lg btn-primary" href="{authorization_url}">Sign in with OAuth</a>
</div>
""",
help="html form to use for login",
config=True,
)
def get_login_method(
self, request: Request, templates=Depends(dependencies.get_templates)
):
request.session["next"] = request.query_params.get("next")

def get_login_html(self, request: Request, templates):
state = secrets.token_urlsafe()
request.session["oauth_state"] = state
authorization_url = self.oauth_route(
Expand All @@ -597,7 +594,7 @@ def get_login_html(self, request: Request, templates):
scope=self.access_scope,
state=state,
)
return self.login_html.format(authorization_url=authorization_url)
return RedirectResponse(authorization_url)

@staticmethod
def oauth_route(auth_url, client_id, redirect_uri, scope=None, state=None):
Expand Down

0 comments on commit 9c9d5f8

Please sign in to comment.