atomatic sign on for deep water users
This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
<h1>Load next week</h1>
|
<h1>Load next week</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
<form enctype="multipart/form-data" method="post">
|
<form enctype="multipart/form-data" method="post">
|
||||||
<table>
|
<table>
|
||||||
{{ form.as_table }}
|
{{ form.as_table }}
|
||||||
@@ -15,6 +16,9 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="submit" value="Submit">
|
<input type="submit" value="Submit">
|
||||||
</form>
|
</form>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a href="http://localhost:8898/{{ rower.training_plan_code }}">Link to plan</a>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
|||||||
@@ -2,37 +2,39 @@ from rowers.views.statements import *
|
|||||||
from rowers.rower_rules import user_is_not_basic, user_is_coachee
|
from rowers.rower_rules import user_is_not_basic, user_is_coachee
|
||||||
from rowers.tokens import create_token
|
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
|
import jwt
|
||||||
|
|
||||||
def deepwatertoken_login(request):
|
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', '')
|
username = request.POST.get('username', '')
|
||||||
password = request.POST.get('password', '')
|
password = request.POST.get('password', '')
|
||||||
user = authenticate(request, username=username, password=password)
|
user = authenticate(request, username=username, password=password)
|
||||||
if user is not None:
|
else:
|
||||||
login(request, user)
|
redirect_url = request.GET.get('redirect', settings.DEEP_WATER_URL)
|
||||||
|
return render(request, "deepwaterlogin.html")
|
||||||
|
|
||||||
|
if user is None:
|
||||||
|
messages.error(request, 'Invalid credentials')
|
||||||
|
return render(request, 'deepwaterlogin.html')
|
||||||
|
|
||||||
|
# Generate token (same as before)
|
||||||
payload = {
|
payload = {
|
||||||
'user_id': user.id,
|
'user_id': user.id,
|
||||||
'username': user.username,
|
'username': user.username,
|
||||||
'email': user.email,
|
'email': user.email,
|
||||||
'exp': timezone.now() + datetime.timedelta(days=1), # Token valid for 1 day
|
'exp': timezone.now() + datetime.timedelta(days=1),
|
||||||
'iat': timezone.now(),
|
'iat': timezone.now(),
|
||||||
}
|
}
|
||||||
|
|
||||||
token = jwt.encode(payload, settings.DEEP_WATER_SECRET_KEY, algorithm='HS256')
|
token = jwt.encode(payload, settings.DEEP_WATER_SECRET_KEY, algorithm='HS256')
|
||||||
|
|
||||||
# Debug: Print the token
|
# Redirect with 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)
|
redirect_url = request.GET.get('redirect', settings.DEEP_WATER_URL)
|
||||||
return HttpResponseRedirect(f"{redirect_url}?token={token}")
|
return HttpResponseRedirect(f"{redirect_url}?token={token}")
|
||||||
else:
|
|
||||||
messages.error(request, 'Invalid credentials')
|
|
||||||
return render(request, 'deepwaterlogin.html')
|
|
||||||
redirect_url = request.GET.get('redirect', settings.DEEP_WATER_URL)
|
|
||||||
return render(request, "deepwaterlogin.html")
|
|
||||||
|
|
||||||
@login_required()
|
@login_required()
|
||||||
def get_deepwater_token(request):
|
def get_deepwater_token(request):
|
||||||
|
|||||||
Reference in New Issue
Block a user