Files
serveur-d-authentification/authentification/views.py

52 lines
2.0 KiB
Python

import json
from decouple import config
from django.contrib import messages
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.models import User
from django.http import JsonResponse
from django.shortcuts import redirect, render
from django.views.decorators.csrf import csrf_exempt
def login_view(request):
if request.method == 'POST':
username = request.POST.get('mail')
password = request.POST.get('mot_de_passe')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
next_url = request.GET.get('next') or request.POST.get('next') or config("SIRH_LIEN")
return redirect(next_url)
else:
messages.error(request, "L'adresse mail ou le mot de passe est invalide. Veuillez réessayer.")
return render(request, 'authentification/login.html', {'error': 'Identifiants invalides'})
return render(request, 'authentification/login.html')
@csrf_exempt
def modifier_mot_passe(request):
"""Vue pour permettre à un utilisateur de modifier son mot de passe et ses informations de profil"""
data = json.loads(request.body)
ancien_mdp = data.get('ancien_mdp')
nouveau_mdp = data.get('nouveau_mdp')
confirmation_mdp = data.get('confirmation_mdp')
username = data.get("username")
user = User.objects.get(username=username)
if not user.check_password(ancien_mdp):
return JsonResponse({"error": "Le mot de passe actuel est incorrect."}, status=400)
if nouveau_mdp != confirmation_mdp:
return JsonResponse({"error": "Le nouveau mot de passe et sa confirmation ne correspondent pas."}, status=400)
user.set_password(nouveau_mdp)
user.save()
return JsonResponse({"success": "Mot de passe modifié avec succès."})
def deconnexion_view(request):
"""Gère la déconnexion de l'utilisateur."""
logout(request)
return redirect('login')