하재연

Add new file

1 +import jwt
2 +import json
3 +from rest_framework import status
4 +
5 +from django.http import JsonResponse
6 +from django.core.exceptions import ObjectDoesNotExist
7 +
8 +from django.conf import settings
9 +from api.models import User
10 +
11 +
12 +def login_decorator(func):
13 + def wrapper(self, request, *args, **kwargs):
14 + if 'Authorization' not in request.headers:
15 + return JsonResponse({'Error': 'INVALID_LOGIN'}, status=status.HTTP_401_UNAUTHORIZED)
16 +
17 + request_token = request.headers['Authorization']
18 + encode_token = request_token.encode('utf-8')
19 +
20 + try:
21 + payload = jwt.decode(encode_token, settings.SECRET_KEY, algorithm='HS256')
22 + user = User.objects.get(int_id=payload['int_id'])
23 + request.user = user
24 +
25 + except jwt.exceptions.DecodeError:
26 + return JsonResponse({'Error': 'INVALID_TOKEN'}, status=status.HTTP_400)
27 +
28 + except User.DoesNotExist:
29 + return JsonResponse({'Error': 'UNKNOWN_USER'}, status=status.HTTP_400)
30 +
31 + return func(self, request, *args, **kwargs)
32 +
33 + return wrapper
...\ No newline at end of file ...\ No newline at end of file