Files
glitchtip-backend/glitchtip/authentication.py
T

28 lines
841 B
Python

from django.utils.translation import gettext_lazy as _
from rest_framework import exceptions
from rest_framework.authentication import TokenAuthentication
from api_tokens.models import APIToken
class BearerTokenAuthentication(TokenAuthentication):
"""
Customized TokenAuthentication to support the APIToken model
and sentry-cli's usage of bearer
"""
keyword = "Bearer"
model = APIToken
def authenticate_credentials(self, key):
model = self.get_model()
try:
token = model.objects.select_related("user").get(token=key)
except model.DoesNotExist:
raise exceptions.AuthenticationFailed(_("Invalid token."))
if not token.user.is_active:
raise exceptions.AuthenticationFailed(_("User inactive or deleted."))
return (token.user, token)