Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions social_core/backends/fence.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

from six.moves.urllib.parse import urljoin

from social_core.utils import cache

from ..utils import append_slash
from .open_id_connect import OpenIdConnectAuth


class Fence(OpenIdConnectAuth):

name = 'fence'
ID_KEY = 'username'
ACCESS_TOKEN_METHOD = 'POST'
DEFAULT_SCOPE = ['openid', 'user']
JWT_DECODE_OPTIONS = {'verify_at_hash': False}

def _url(self, path):
return urljoin(append_slash(self.setting('URL')), path)

def authorization_url(self):
return self._url("oauth2/authorize")

def access_token_url(self):
return self._url("oauth2/token")

@cache(ttl=86400)
def oidc_config(self):
return self.get_json(self._url(".well-known/openid-configuration"))

def get_user_details(self, response):
return {
'username': response.get('preferred_username'),
'email': response.get('username'),
'fullname': response.get('name'),
'first_name': response.get('given_name'),
'last_name': response.get('family_name'),
}