Add link to directly go to registration page

Resolves MS-558
This commit is contained in:
Ramon Wenger 2023-02-14 16:26:54 +01:00
parent 6018925361
commit aa9886be8d
3 changed files with 31 additions and 15 deletions

View File

@ -46,8 +46,8 @@
<p>Haben Sie noch kein hep Konto?</p> <p>Haben Sie noch kein hep Konto?</p>
<a <a
class="hep-link" class="hep-link"
href="/api/oauth/login/" href="/api/oauth/register/"
data-cy="oauth-login" data-cy="oauth-register"
>Jetzt registrieren</a >Jetzt registrieren</a
> >
</div> </div>

View File

@ -1,8 +1,9 @@
from django.conf.urls import url from django.conf.urls import url
from oauth import views from oauth import views
app_name = 'users' app_name = "users"
urlpatterns = [ urlpatterns = [
url(r'^login/', views.login, name='login'), url(r"^login/", views.login, name="login"),
url(r'^callback/', views.authorize, name='authorize') url(r"^register/", views.register, name="register"),
url(r"^callback/", views.authorize, name="authorize"),
] ]

View File

@ -6,20 +6,36 @@ from sentry_sdk import capture_exception
from oauth.hep_client import HepClient from oauth.hep_client import HepClient
from oauth.oauth_client import oauth from oauth.oauth_client import oauth
from oauth.models import OAuth2Token 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 django.contrib.auth import login as dj_login
from core.logger import get_logger from core.logger import get_logger
logger = get_logger(__name__) 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): def login(request):
hep_oauth_client = oauth.create_client('hep') return go_to_oauth(request)
redirect_uri = settings.OAUTH_LOCAL_REDIRECT_URI
return hep_oauth_client.authorize_redirect(request, redirect_uri)
def register(request):
return go_to_oauth(request, go_to_register=True)
def authorize(request): def authorize(request):
@ -31,10 +47,10 @@ def authorize(request):
user, status_msg = handle_user_and_verify_products(user_data, token) user, status_msg = handle_user_and_verify_products(user_data, token)
user.sync_with_hep_data(user_data) user.sync_with_hep_data(user_data)
except OAuthError as e: except OAuthError as e:
logger.warning(f'OAuth error: {e}') logger.warning(f"OAuth error: {e}")
if not settings.DEBUG: if not settings.DEBUG:
capture_exception(e) 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: if user and status_msg != EMAIL_NOT_VERIFIED:
dj_login(request, user) dj_login(request, user)
@ -42,7 +58,6 @@ def authorize(request):
OAuth2Token.objects.update_or_create_token(token, user) OAuth2Token.objects.update_or_create_token(token, user)
if status_msg: if status_msg:
return redirect(f'/{OAUTH_REDIRECT}?state={status_msg}') return redirect(f"/{OAUTH_REDIRECT}?state={status_msg}")
return redirect(f'/{OAUTH_REDIRECT}?state=success')
return redirect(f"/{OAUTH_REDIRECT}?state=success")