51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import logging
|
|
|
|
from django.http import JsonResponse
|
|
|
|
from rest_framework.decorators import api_view
|
|
from oauthlib import openid
|
|
from py_jwt_validator import PyJwtValidator, PyJwtException
|
|
import requests
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class TestApiClass:
|
|
@staticmethod
|
|
@api_view(['GET'])
|
|
def test_api(request):
|
|
logger.debug('Test api call: {}'.format(request))
|
|
return JsonResponse({'Result': 'success'}, safe=False)
|
|
|
|
|
|
class LoginClass:
|
|
@staticmethod
|
|
@api_view(['GET'])
|
|
def login(request: requests.Request):
|
|
logger.debug('Validating request: {}'.format(request))
|
|
|
|
if 'Authorization' not in request.headers:
|
|
print(f"Authorization header missing")
|
|
logger.error(f"Authorization header missing")
|
|
return JsonResponse({}, status=401)
|
|
|
|
bearer = request.headers['Authorization']
|
|
|
|
if len(bearer.split()) < 2:
|
|
return JsonResponse({}, status=401)
|
|
|
|
jwt = bearer.split()[1]
|
|
|
|
try:
|
|
PyJwtValidator(jwt)
|
|
except PyJwtException as e:
|
|
print(f"Exception caught. Error: {e}")
|
|
logger.error(f"Exception caught. Error: {e}")
|
|
return JsonResponse({}, status=401)
|
|
except UnicodeDecodeError as e2:
|
|
print(f"Exception caught. Error: {e2}")
|
|
logger.error(f"Exception caught. Error: {e2}")
|
|
return JsonResponse({}, status=401)
|
|
|
|
return JsonResponse({}, safe=False, status=200)
|