fix: minor bugfixes
This commit is contained in:
parent
cd81ce179d
commit
b0e1eb5aaa
3 changed files with 8 additions and 9 deletions
|
|
@ -29,6 +29,6 @@ class ExpiringTokenAuthentication(TokenAuthentication):
|
||||||
|
|
||||||
if token.is_expired():
|
if token.is_expired():
|
||||||
token.delete()
|
token.delete()
|
||||||
raise AuthenticationFailed({"error": "No active session or token already expired"})
|
raise AuthenticationFailed({"error": "Token expired."})
|
||||||
|
|
||||||
return (token.user, token)
|
return (token.user, token)
|
||||||
|
|
@ -12,24 +12,23 @@ from user_app.serializers import UserSerializer
|
||||||
from django.contrib.auth.tokens import default_token_generator
|
from django.contrib.auth.tokens import default_token_generator
|
||||||
from .services import create_password_reset_link, send_password_reset_email, verify_password_reset_token, set_user_password
|
from .services import create_password_reset_link, send_password_reset_email, verify_password_reset_token, set_user_password
|
||||||
|
|
||||||
|
|
||||||
User = get_user_model()
|
User = get_user_model()
|
||||||
|
|
||||||
class LoginView(APIView):
|
class LoginView(APIView):
|
||||||
serializer_class = LoginSerializer
|
serializer_class = LoginSerializer
|
||||||
|
|
||||||
def _create_token_response(self, user):
|
def _create_token_response(self, user):
|
||||||
|
now = timezone.now()
|
||||||
token, created = ExpiringToken.objects.get_or_create(user=user)
|
token, created = ExpiringToken.objects.get_or_create(user=user)
|
||||||
|
|
||||||
if not created and token.is_expired():
|
if token.is_expired():
|
||||||
token.delete()
|
token.delete()
|
||||||
token = ExpiringToken.objects.create(user=user)
|
token = ExpiringToken.objects.create(user=user)
|
||||||
|
|
||||||
if created or not token.expires_at:
|
token.expires_at = now + TOKEN_EXPIRATION_TIME
|
||||||
token.expires_at = timezone.now() + TOKEN_EXPIRATION_TIME
|
token.save()
|
||||||
token.save()
|
|
||||||
|
user.last_login = now
|
||||||
user.last_login = timezone.now()
|
|
||||||
user.save(update_fields=['last_login'])
|
user.save(update_fields=['last_login'])
|
||||||
|
|
||||||
return Response({'token': token.key, 'user_id': user.id}, status=status.HTTP_200_OK)
|
return Response({'token': token.key, 'user_id': user.id}, status=status.HTTP_200_OK)
|
||||||
|
|
|
||||||
|
|
@ -170,7 +170,7 @@ DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
||||||
|
|
||||||
AUTH_TOKEN_MODEL = 'auth_app.ExpiringToken'
|
AUTH_TOKEN_MODEL = 'auth_app.ExpiringToken'
|
||||||
|
|
||||||
TOKEN_EXPIRATION_TIME = timedelta(hours=4)
|
TOKEN_EXPIRATION_TIME = timedelta(hours=24)
|
||||||
|
|
||||||
# Authentication
|
# Authentication
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue