From 7332862c3a15d97afa1b5b30abd5cbfbf1b2dea7 Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Tue, 9 Sep 2025 18:14:13 +0200 Subject: [PATCH] atomatic sign on for deep water users --- rowers/templates/loadnextweek.html | 4 +++ rowers/views/userviews.py | 48 ++++++++++++++++-------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/rowers/templates/loadnextweek.html b/rowers/templates/loadnextweek.html index b7eb16bb..99ca14b1 100644 --- a/rowers/templates/loadnextweek.html +++ b/rowers/templates/loadnextweek.html @@ -8,6 +8,7 @@

Load next week

+

{{ form.as_table }} @@ -15,6 +16,9 @@ {% csrf_token %} +

+

+ Link to plan {% endblock %} diff --git a/rowers/views/userviews.py b/rowers/views/userviews.py index 300a8f78..f4801527 100644 --- a/rowers/views/userviews.py +++ b/rowers/views/userviews.py @@ -1,38 +1,40 @@ from rowers.views.statements import * from rowers.rower_rules import user_is_not_basic, user_is_coachee from rowers.tokens import create_token -from rowers.forms import DeepWaterLoginForm +from rowers.forms import DeepWaterLoginForm +from django.contrib.auth import get_user import jwt def deepwatertoken_login(request): - if request.method == 'POST': + # Check if user is already authenticated + if request.user.is_authenticated: + user = request.user + elif request.method == 'POST': username = request.POST.get('username', '') password = request.POST.get('password', '') user = authenticate(request, username=username, password=password) - if user is not None: - login(request, user) - payload = { - 'user_id': user.id, - 'username': user.username, - 'email': user.email, - 'exp': timezone.now() + datetime.timedelta(days=1), # Token valid for 1 day - 'iat': timezone.now(), - } + else: + redirect_url = request.GET.get('redirect', settings.DEEP_WATER_URL) + return render(request, "deepwaterlogin.html") - token = jwt.encode(payload, settings.DEEP_WATER_SECRET_KEY, algorithm='HS256') + if user is None: + messages.error(request, 'Invalid credentials') + return render(request, 'deepwaterlogin.html') - # Debug: Print the token - print(f"Generated token: {token}") - print(f"Token length: {len(token)}") - print(f"Token parts: {token.split('.')}") - - redirect_url = request.GET.get('redirect', settings.DEEP_WATER_URL) - return HttpResponseRedirect(f"{redirect_url}?token={token}") - else: - messages.error(request, 'Invalid credentials') - return render(request, 'deepwaterlogin.html') + # Generate token (same as before) + payload = { + 'user_id': user.id, + 'username': user.username, + 'email': user.email, + 'exp': timezone.now() + datetime.timedelta(days=1), + 'iat': timezone.now(), + } + token = jwt.encode(payload, settings.DEEP_WATER_SECRET_KEY, algorithm='HS256') + + # Redirect with token redirect_url = request.GET.get('redirect', settings.DEEP_WATER_URL) - return render(request, "deepwaterlogin.html") + return HttpResponseRedirect(f"{redirect_url}?token={token}") + @login_required() def get_deepwater_token(request):