[Feature] Password Reset Flow (#88)

Fixes #83

Co-authored-by: Tim Lorsbach <tim@lorsba.ch>
Reviewed-on: enviPath/enviPy#88
This commit is contained in:
2025-09-06 19:53:36 +12:00
parent a16035677c
commit 1a6608287d
10 changed files with 226 additions and 223 deletions

View File

@ -48,7 +48,7 @@ def login(request):
if request.method == 'GET':
context['title'] = 'enviPath'
context['next'] = request.GET.get('next', '')
return render(request, 'login.html', context)
return render(request, 'static/login.html', context)
elif request.method == 'POST':
is_login = bool(request.POST.get('login', False))
@ -67,17 +67,17 @@ def login(request):
if not temp_user.is_active:
context['message'] = "User account is not activated yet!"
return render(request, 'login.html', context)
return render(request, 'static/login.html', context)
email = temp_user.email
except get_user_model().DoesNotExist:
context['message'] = "Login failed!"
return render(request, 'login.html', context)
return render(request, 'static/login.html', context)
try:
user = authenticate(username=email, password=password)
except Exception as e:
context['message'] = "Login failed!"
return render(request, 'login.html', context)
return render(request, 'static/login.html', context)
if user is not None:
login(request, user)
@ -88,7 +88,7 @@ def login(request):
return redirect(s.SERVER_URL)
else:
context['message'] = "Login failed!"
return render(request, 'login.html', context)
return render(request, 'static/login.html', context)
elif is_register:
username = request.POST.get('username')
@ -98,19 +98,19 @@ def login(request):
if password != rpassword or password == '':
context['message'] = "Registration failed, provided passwords differ!"
return render(request, 'login.html', context)
return render(request, 'static/login.html', context)
try:
u = UserManager.create_user(username, email, password)
except Exception:
context['message'] = "Registration failed! Couldn't create User Account."
return render(request, 'login.html', context)
return render(request, 'static/login.html', context)
if s.ADMIN_APPROVAL_REQUIRED:
context['message'] = "Your account has been created! An admin will activate it soon!"
else:
context['message'] = "Account has been created! You'll receive a mail to activate your account shortly."
return render(request, 'login.html', context)
return render(request, 'static/login.html', context)
else:
return HttpResponseBadRequest()
else: