initial import for Open Source 🎉
This commit is contained in:
parent
1898c361f3
commit
9c0dd3b722
2048 changed files with 218743 additions and 0 deletions
37
oauth/loginmanager.py
Normal file
37
oauth/loginmanager.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
from oauth.services.github import GithubOAuthService
|
||||
from oauth.services.google import GoogleOAuthService
|
||||
from oauth.oidc import OIDCLoginService
|
||||
|
||||
CUSTOM_LOGIN_SERVICES = {
|
||||
'GITHUB_LOGIN_CONFIG': GithubOAuthService,
|
||||
'GOOGLE_LOGIN_CONFIG': GoogleOAuthService,
|
||||
}
|
||||
|
||||
PREFIX_BLACKLIST = ['ldap', 'jwt', 'keystone']
|
||||
|
||||
class OAuthLoginManager(object):
|
||||
""" Helper class which manages all registered OAuth login services. """
|
||||
def __init__(self, config, client=None):
|
||||
self.services = []
|
||||
|
||||
# Register the endpoints for each of the OAuth login services.
|
||||
for key in config.keys():
|
||||
# All keys which end in _LOGIN_CONFIG setup a login service.
|
||||
if key.endswith('_LOGIN_CONFIG'):
|
||||
if key in CUSTOM_LOGIN_SERVICES:
|
||||
custom_service = CUSTOM_LOGIN_SERVICES[key](config, key)
|
||||
if custom_service.login_enabled(config):
|
||||
self.services.append(custom_service)
|
||||
else:
|
||||
prefix = key.rstrip('_LOGIN_CONFIG').lower()
|
||||
if prefix in PREFIX_BLACKLIST:
|
||||
raise Exception('Cannot use reserved config name %s' % key)
|
||||
|
||||
self.services.append(OIDCLoginService(config, key, client=client))
|
||||
|
||||
def get_service(self, service_id):
|
||||
for service in self.services:
|
||||
if service.service_id() == service_id:
|
||||
return service
|
||||
|
||||
return None
|
||||
Reference in a new issue