2019-11-22 11:23:24 -07:00
|
|
|
"""SatNOGS Network Auth0 login module auth backend"""
|
2019-12-30 13:32:04 -07:00
|
|
|
from __future__ import absolute_import
|
|
|
|
|
2018-12-14 07:57:05 -07:00
|
|
|
import requests
|
|
|
|
from social_core.backends.oauth import BaseOAuth2
|
|
|
|
|
|
|
|
|
2019-09-28 04:47:18 -06:00
|
|
|
class Auth0(BaseOAuth2):
|
2018-12-14 07:57:05 -07:00
|
|
|
"""Auth0 OAuth authentication backend"""
|
|
|
|
name = 'auth0'
|
|
|
|
SCOPE_SEPARATOR = ' '
|
|
|
|
ACCESS_TOKEN_METHOD = 'POST'
|
2019-09-23 06:14:49 -06:00
|
|
|
EXTRA_DATA = [('email', 'email')]
|
2018-12-14 07:57:05 -07:00
|
|
|
|
|
|
|
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"
|
|
|
|
|
2019-09-28 04:47:18 -06:00
|
|
|
def auth_html(self):
|
|
|
|
"""Return the login endpoint."""
|
|
|
|
return "https://" + self.setting('DOMAIN') + "/login/auth0"
|
|
|
|
|
2018-12-14 07:57:05 -07:00
|
|
|
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()
|
|
|
|
|
2019-09-23 06:14:49 -06:00
|
|
|
return {
|
|
|
|
'username': userinfo['nickname'],
|
|
|
|
'email': userinfo['email'],
|
|
|
|
# 'first_name': userinfo['name'],
|
|
|
|
'user_id': userinfo['sub']
|
|
|
|
}
|