utils.py
1.04 KB
import jwt
import json
from rest_framework import status
from django.http import JsonResponse
from django.core.exceptions import ObjectDoesNotExist
from django.conf import settings
from api.models import User
def login_decorator(func):
def wrapper(self, request, *args, **kwargs):
if 'Authorization' not in request.headers:
return JsonResponse({'Error': 'INVALID_LOGIN'}, status=status.HTTP_401_UNAUTHORIZED)
request_token = request.headers['Authorization']
encode_token = request_token.encode('utf-8')
try:
payload = jwt.decode(encode_token, settings.SECRET_KEY, algorithm='HS256')
user = User.objects.get(int_id=payload['int_id'])
request.user = user
except jwt.exceptions.DecodeError:
return JsonResponse({'Error': 'INVALID_TOKEN'}, status=status.HTTP_400)
except User.DoesNotExist:
return JsonResponse({'Error': 'UNKNOWN_USER'}, status=status.HTTP_400)
return func(self, request, *args, **kwargs)
return wrapper