Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[All] Add post_logout_redirect_uri configuration #531

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
31 changes: 30 additions & 1 deletion oauthenticator/oauth2.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,11 +232,32 @@ async def handle_logout(self):

async def render_logout_page(self):
if self.authenticator.logout_redirect_url:
self.redirect(self.authenticator.logout_redirect_url)
redirect_uri_params = await self.get_redirect_uri_params()
url = url_concat(
self.authenticator.logout_redirect_url, redirect_uri_params
)
self.redirect(url)
return

return await super().render_logout_page()

async def get_redirect_uri_params(self):
redirect_uri_params = dict()
user = list(self.users.values())
if not user:
return redirect_uri_params

auth_state = await user[0].get_auth_state()
if auth_state['id_token']:
redirect_uri_params['id_token_hint'] = auth_state['id_token']

if self.authenticator.post_logout_redirect_uri:
redirect_uri_params[
'post_logout_redirect_uri'
] = self.authenticator.post_logout_redirect_uri

return redirect_uri_params


class OAuthenticator(Authenticator):
"""Base class for OAuthenticators
Expand Down Expand Up @@ -323,6 +344,14 @@ def _refresh_pre_spawn(self):
def _logout_redirect_url_default(self):
return os.getenv("OAUTH_LOGOUT_REDIRECT_URL", "")

post_logout_redirect_uri = Unicode(
config=True, help="The URI where the client is redirected after logout"
)

@default("post_logout_redirect_uri")
def _post_logout_redirect_uri(self):
return os.getenv("OAUTH2_POST_LOGOUT_REDIRECT_URI", "")

custom_403_message = Unicode(
"Sorry, you are not currently authorized to use this hub. Please contact the hub administrator.",
config=True,
Expand Down