From aa9886be8d2533aeab9dfa244cea8c08be0466b1 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 14 Feb 2023 16:26:54 +0100 Subject: [PATCH] Add link to directly go to registration page Resolves MS-558 --- client/src/pages/hello.vue | 4 ++-- server/oauth/urls.py | 7 ++++--- server/oauth/views.py | 35 +++++++++++++++++++++++++---------- 3 files changed, 31 insertions(+), 15 deletions(-) diff --git a/client/src/pages/hello.vue b/client/src/pages/hello.vue index 4ab5ecff..963cb11f 100644 --- a/client/src/pages/hello.vue +++ b/client/src/pages/hello.vue @@ -46,8 +46,8 @@

Haben Sie noch kein hep Konto?

Jetzt registrieren diff --git a/server/oauth/urls.py b/server/oauth/urls.py index e60d96d9..db3c6c0f 100644 --- a/server/oauth/urls.py +++ b/server/oauth/urls.py @@ -1,8 +1,9 @@ from django.conf.urls import url from oauth import views -app_name = 'users' +app_name = "users" urlpatterns = [ - url(r'^login/', views.login, name='login'), - url(r'^callback/', views.authorize, name='authorize') + url(r"^login/", views.login, name="login"), + url(r"^register/", views.register, name="register"), + url(r"^callback/", views.authorize, name="authorize"), ] diff --git a/server/oauth/views.py b/server/oauth/views.py index d83d27a7..7f9ff299 100644 --- a/server/oauth/views.py +++ b/server/oauth/views.py @@ -6,20 +6,36 @@ from sentry_sdk import capture_exception from oauth.hep_client import HepClient from oauth.oauth_client import oauth from oauth.models import OAuth2Token -from oauth.user_signup_login_handler import handle_user_and_verify_products, EMAIL_NOT_VERIFIED, UNKNOWN_ERROR +from oauth.user_signup_login_handler import ( + handle_user_and_verify_products, + EMAIL_NOT_VERIFIED, + UNKNOWN_ERROR, +) from django.contrib.auth import login as dj_login from core.logger import get_logger logger = get_logger(__name__) -OAUTH_REDIRECT = 'oauth-redirect' +OAUTH_REDIRECT = "oauth-redirect" + + +def go_to_oauth(request, go_to_register=False): + hep_oauth_client = oauth.create_client("hep") + redirect_uri = settings.OAUTH_LOCAL_REDIRECT_URI + if go_to_register: + kwargs = {"redirect": "register"} + else: + kwargs = {} + return hep_oauth_client.authorize_redirect(request, redirect_uri, **kwargs) def login(request): - hep_oauth_client = oauth.create_client('hep') - redirect_uri = settings.OAUTH_LOCAL_REDIRECT_URI - return hep_oauth_client.authorize_redirect(request, redirect_uri) + return go_to_oauth(request) + + +def register(request): + return go_to_oauth(request, go_to_register=True) def authorize(request): @@ -31,10 +47,10 @@ def authorize(request): user, status_msg = handle_user_and_verify_products(user_data, token) user.sync_with_hep_data(user_data) except OAuthError as e: - logger.warning(f'OAuth error: {e}') + logger.warning(f"OAuth error: {e}") if not settings.DEBUG: capture_exception(e) - return redirect(f'/{OAUTH_REDIRECT}?state={UNKNOWN_ERROR}') + return redirect(f"/{OAUTH_REDIRECT}?state={UNKNOWN_ERROR}") if user and status_msg != EMAIL_NOT_VERIFIED: dj_login(request, user) @@ -42,7 +58,6 @@ def authorize(request): OAuth2Token.objects.update_or_create_token(token, user) if status_msg: - return redirect(f'/{OAUTH_REDIRECT}?state={status_msg}') - - return redirect(f'/{OAUTH_REDIRECT}?state=success') + return redirect(f"/{OAUTH_REDIRECT}?state={status_msg}") + return redirect(f"/{OAUTH_REDIRECT}?state=success")