2022-06-05 13:09:27 +03:00
|
|
|
from rest_framework import authentication
|
|
|
|
from rest_framework import exceptions
|
|
|
|
from .models import Player
|
|
|
|
from .services.jwt import read_jwt
|
|
|
|
|
|
|
|
|
|
|
|
class PlayerAuthentication(authentication.BaseAuthentication):
|
|
|
|
def authenticate(self, request):
|
2022-06-05 21:28:20 +03:00
|
|
|
|
2022-06-06 20:15:45 +03:00
|
|
|
if "Authorization" not in request.headers or not (
|
|
|
|
token := request.headers["Authorization"]
|
|
|
|
):
|
2022-06-05 13:09:27 +03:00
|
|
|
raise exceptions.AuthenticationFailed("No credentials provided.")
|
|
|
|
|
|
|
|
t = read_jwt(token)
|
|
|
|
if not t:
|
|
|
|
raise exceptions.AuthenticationFailed("Token is incorrect of expired")
|
|
|
|
|
|
|
|
if "id" not in t:
|
|
|
|
raise exceptions.AuthenticationFailed("No user data")
|
|
|
|
|
|
|
|
try:
|
|
|
|
user = Player.objects.get(id=int(t["id"]))
|
|
|
|
except Player.DoesNotExist:
|
|
|
|
raise exceptions.AuthenticationFailed("No such user")
|
|
|
|
|
|
|
|
return user, None
|