mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
fix: refresh token
This commit is contained in:
@ -215,6 +215,39 @@ class LoginView(APIView):
|
|||||||
'errorMessage': retour,
|
'errorMessage': retour,
|
||||||
}, safe=False, status=status.HTTP_400_BAD_REQUEST)
|
}, 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):
|
class RefreshJWTView(APIView):
|
||||||
@swagger_auto_schema(
|
@swagger_auto_schema(
|
||||||
operation_description="Rafraîchir le token d'accès",
|
operation_description="Rafraîchir le token d'accès",
|
||||||
@ -277,7 +310,7 @@ class RefreshJWTView(APIView):
|
|||||||
if not user:
|
if not user:
|
||||||
return JsonResponse({'errorMessage': 'Utilisateur non trouvé'}, status=404)
|
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)
|
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)}")
|
logger.error(f"Erreur inattendue: {str(e)}")
|
||||||
return JsonResponse({'errorMessage': f'Erreur inattendue: {str(e)}'}, status=400)
|
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(csrf_protect, name='dispatch')
|
||||||
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
@method_decorator(ensure_csrf_cookie, name='dispatch')
|
||||||
class SubscribeView(APIView):
|
class SubscribeView(APIView):
|
||||||
|
|||||||
Reference in New Issue
Block a user