Skip to content
Snippets Groups Projects
Commit 94df4711 authored by Benoit Alessandroni's avatar Benoit Alessandroni
Browse files

feature: add bearer auth backend

parent 4a8e30bf
No related branches found
No related tags found
1 merge request!120feature: add bearer auth backend
Pipeline #18859 failed
...@@ -168,3 +168,30 @@ class ExternalUserBackend(ModelBackend): ...@@ -168,3 +168,30 @@ class ExternalUserBackend(ModelBackend):
# make an attempt assuming Bearer token if not recognised or not specified # make an attempt assuming Bearer token if not recognised or not specified
return self.validate_bearer_token(jwt) return self.validate_bearer_token(jwt)
class BearerAuthBackend(AllowAllUsersModelBackend):
def validate_bearer_token(self, token):
try:
token = Token.objects.get(access_token=token)
if token:
owner = token.client.owner
if self.user_can_authenticate(owner):
return owner
except Exception as e:
raise e
return None
def authenticate(self, request, *args, **kwargs):
if "HTTP_AUTHORIZATION" in request.META:
jwt = request.META["HTTP_AUTHORIZATION"]
if jwt.lower().startswith("bearer"):
jwt = jwt[7:]
# make an attempt assuming Bearer token if not recognised or not specified
return self.validate_bearer_token(jwt)
return ModelBackend().authenticate(request, *args, **kwargs)
def userinfo(claims, user): def userinfo(claims, user):
# Populate claims dict. # Populate claims dict.
if not user:
return claims
claims['name'] = '{0} {1}'.format(user.first_name, user.last_name) claims['name'] = '{0} {1}'.format(user.first_name, user.last_name)
claims['email'] = user.email claims['email'] = user.email
claims['website'] = user.urlid claims['website'] = user.urlid
...@@ -8,4 +11,5 @@ def userinfo(claims, user): ...@@ -8,4 +11,5 @@ def userinfo(claims, user):
return claims return claims
def sub_generator(user): def sub_generator(user):
return user.urlid if user:
return user.urlid
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment