izaac-2/backend/users/authentication.py
2025-08-31 23:05:53 +02:00

17 lines
722 B
Python

from rest_framework_simplejwt.authentication import JWTAuthentication
from rest_framework.exceptions import AuthenticationFailed
from django.contrib.auth import get_user_model
User = get_user_model()
class VersionedJWTAuthentication(JWTAuthentication):
"""
Odrzuca KAŻDY access token, którego token_version ≠ user.token_version.
"""
def get_user(self, validated_token):
user = super().get_user(validated_token)
token_ver = int(validated_token.get("token_version", -1))
user_ver = int(getattr(user, "token_version", 0))
if token_ver != user_ver:
raise AuthenticationFailed("Token is no longer valid", code="token_stale")
return user