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')