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

43 lines
1.3 KiB
Python

"""SatNOGS Network Auth0 login module auth backend"""
from __future__ import absolute_import
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 auth_html(self):
"""Return the login endpoint."""
return "https://" + self.setting('DOMAIN') + "/login/auth0"
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']
}