52 lines
1.9 KiB
Python
52 lines
1.9 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')
|