From 053d524a513adfec8bd9b3467fc358c257776a85 Mon Sep 17 00:00:00 2001 From: N3WT DE COMPET Date: Fri, 2 May 2025 18:28:26 +0200 Subject: [PATCH] fix: refresh token --- Back-End/Auth/views.py | 68 +++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/Back-End/Auth/views.py b/Back-End/Auth/views.py index 69f6f03..2ef3c14 100644 --- a/Back-End/Auth/views.py +++ b/Back-End/Auth/views.py @@ -215,6 +215,39 @@ class LoginView(APIView): 'errorMessage': retour, }, safe=False, status=status.HTTP_400_BAD_REQUEST) +def makeToken(user): + """ + Fonction pour créer un token JWT pour l'utilisateur donné. + """ + try: + # Récupérer tous les rôles de l'utilisateur actifs + roles = ProfileRole.objects.filter(profile=user, is_active=True).values('role_type', 'establishment__id', 'establishment__name') + + # Générer le JWT avec la bonne syntaxe datetime + access_payload = { + 'user_id': user.id, + 'email': user.email, + 'roleIndexLoginDefault':user.roleIndexLoginDefault, + 'roles': list(roles), + 'type': 'access', + 'exp': datetime.utcnow() + settings.SIMPLE_JWT['ACCESS_TOKEN_LIFETIME'], + 'iat': datetime.utcnow(), + } + + access_token = jwt.encode(access_payload, settings.SIMPLE_JWT['SIGNING_KEY'], algorithm=settings.SIMPLE_JWT['ALGORITHM']) + # Générer le Refresh Token (exp: 7 jours) + refresh_payload = { + 'user_id': user.id, + 'type': 'refresh', + 'exp': datetime.utcnow() + settings.SIMPLE_JWT['REFRESH_TOKEN_LIFETIME'], + 'iat': datetime.utcnow(), + } + refresh_token = jwt.encode(refresh_payload, settings.SIMPLE_JWT['SIGNING_KEY'], algorithm=settings.SIMPLE_JWT['ALGORITHM']) + return access_token, refresh_token + except Exception as e: + logger.error(f"Erreur lors de la création du token: {str(e)}") + return None + class RefreshJWTView(APIView): @swagger_auto_schema( operation_description="Rafraîchir le token d'accès", @@ -277,7 +310,7 @@ class RefreshJWTView(APIView): if not user: return JsonResponse({'errorMessage': 'Utilisateur non trouvé'}, status=404) - new_access_payload, new_refresh_token = makeToken(user) + new_access_token, new_refresh_token = makeToken(user) return JsonResponse({'token': new_access_token, 'refresh': new_refresh_token}, status=200) @@ -291,39 +324,6 @@ class RefreshJWTView(APIView): logger.error(f"Erreur inattendue: {str(e)}") return JsonResponse({'errorMessage': f'Erreur inattendue: {str(e)}'}, status=400) -def makeToken(user): - """ - Fonction pour créer un token JWT pour l'utilisateur donné. - """ - try: - # Récupérer tous les rôles de l'utilisateur actifs - roles = ProfileRole.objects.filter(profile=user, is_active=True).values('role_type', 'establishment__id', 'establishment__name') - - # Générer le JWT avec la bonne syntaxe datetime - access_payload = { - 'user_id': user.id, - 'email': user.email, - 'roleIndexLoginDefault':user.roleIndexLoginDefault, - 'roles': list(roles), - 'type': 'access', - 'exp': datetime.utcnow() + settings.SIMPLE_JWT['ACCESS_TOKEN_LIFETIME'], - 'iat': datetime.utcnow(), - } - - access_token = jwt.encode(access_payload, settings.SIMPLE_JWT['SIGNING_KEY'], algorithm=settings.SIMPLE_JWT['ALGORITHM']) - # Générer le Refresh Token (exp: 7 jours) - refresh_payload = { - 'user_id': user.id, - 'type': 'refresh', - 'exp': datetime.utcnow() + settings.SIMPLE_JWT['REFRESH_TOKEN_LIFETIME'], - 'iat': datetime.utcnow(), - } - refresh_token = jwt.encode(refresh_payload, settings.SIMPLE_JWT['SIGNING_KEY'], algorithm=settings.SIMPLE_JWT['ALGORITHM']) - return access_token, refresh_token - except Exception as e: - logger.error(f"Erreur lors de la création du token: {str(e)}") - return None - @method_decorator(csrf_protect, name='dispatch') @method_decorator(ensure_csrf_cookie, name='dispatch') class SubscribeView(APIView):