|
|
|
|
@ -2,6 +2,11 @@ |
|
|
|
|
import os |
|
|
|
|
import csv |
|
|
|
|
|
|
|
|
|
from django.contrib.auth import update_session_auth_hash |
|
|
|
|
from django.contrib.auth.views import PasswordResetCompleteView |
|
|
|
|
from django.shortcuts import redirect |
|
|
|
|
from django.contrib.auth import login |
|
|
|
|
from django.contrib.auth import get_user_model |
|
|
|
|
from django.shortcuts import render, get_object_or_404 |
|
|
|
|
from django.http import JsonResponse, HttpResponse |
|
|
|
|
from django.utils.encoding import force_str |
|
|
|
|
@ -818,6 +823,54 @@ class CustomPasswordResetConfirmView(PasswordResetConfirmView): |
|
|
|
|
except (TypeError, ValueError, User.DoesNotExist): |
|
|
|
|
raise Http404("User not found") |
|
|
|
|
|
|
|
|
|
class CustomPasswordResetCompleteView(PasswordResetCompleteView): |
|
|
|
|
template_name = 'registration/password_reset_complete.html' |
|
|
|
|
|
|
|
|
|
def get(self, request, *args, **kwargs): |
|
|
|
|
# Get the user from the session |
|
|
|
|
username = request.session.get('reset_username') |
|
|
|
|
|
|
|
|
|
if username: |
|
|
|
|
try: |
|
|
|
|
# Get the user |
|
|
|
|
User = get_user_model() |
|
|
|
|
user = User.objects.get(username=username) |
|
|
|
|
|
|
|
|
|
# Log the user in |
|
|
|
|
login(request, user, backend='django.contrib.auth.backends.ModelBackend') |
|
|
|
|
|
|
|
|
|
# Clean up the session |
|
|
|
|
if 'reset_username' in request.session: |
|
|
|
|
del request.session['reset_username'] |
|
|
|
|
|
|
|
|
|
# Redirect to the profile page |
|
|
|
|
return redirect('profile') |
|
|
|
|
except User.DoesNotExist: |
|
|
|
|
pass |
|
|
|
|
|
|
|
|
|
# If no username in session or user not found, proceed with normal view |
|
|
|
|
return super().get(request, *args, **kwargs) |
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
|
def custom_password_change(request): |
|
|
|
|
if request.method == 'POST': |
|
|
|
|
form = CustomPasswordChangeForm(user=request.user, data=request.POST) |
|
|
|
|
if form.is_valid(): |
|
|
|
|
user = form.save() |
|
|
|
|
update_session_auth_hash(request, user) # Important to keep user logged in |
|
|
|
|
messages.success(request, 'Votre mot de passe a été mis à jour avec succès!') |
|
|
|
|
return redirect('profile') |
|
|
|
|
else: |
|
|
|
|
# Form is invalid, show errors |
|
|
|
|
profile_form = ProfileUpdateForm(instance=request.user) |
|
|
|
|
return render(request, 'profile.html', { |
|
|
|
|
'form': profile_form, |
|
|
|
|
'password_change_form': form |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
# If not POST, redirect to profile page |
|
|
|
|
return redirect('profile') |
|
|
|
|
|
|
|
|
|
@login_required |
|
|
|
|
def my_tournaments(request): |
|
|
|
|
user = request.user |
|
|
|
|
|