1
0
Fork 0
satnogs-network/auth0login/auth0backend.py

36 lines
1.1 KiB
Python

import requests
from social_core.backends.oauth import BaseOAuth2
class Auth0(BaseOAuth2):
"""Auth0 OAuth authentication backend"""
name = 'auth0'
SCOPE_SEPARATOR = ' '
ACCESS_TOKEN_METHOD = 'POST'
EXTRA_DATA = [
('email', 'email')
]
def authorization_url(self):
"""Return the authorization endpoint."""
return "https://" + self.setting('DOMAIN') + "/authorize"
def access_token_url(self):
"""Return the token endpoint."""
return "https://" + self.setting('DOMAIN') + "/oauth/token"
def get_user_id(self, details, response):
"""Return current user id."""
return details['user_id']
def get_user_details(self, response):
url = 'https://' + self.setting('DOMAIN') + '/userinfo'
headers = {'authorization': 'Bearer ' + response['access_token']}
resp = requests.get(url, headers=headers)
userinfo = resp.json()
return {'username': userinfo['nickname'],
'email': userinfo['email'],
# 'first_name': userinfo['name'],
'user_id': userinfo['sub']}