def have_enabled_federated_login_methods(): providers = get_enabled_major_login_providers() providers.update(get_enabled_minor_login_providers()) provider_types = [provider['type'] for provider in providers.values()] for provider_type in provider_types: if provider_type.startswith('openid') or provider_type == 'oauth': return True return False
def get_the_only_login_provider(): """Returns login provider datum if: * only one provider is enabled * this provider is a third party provider Otherwise returns `None` """ providers = get_enabled_login_providers() if len(providers) == 1: provider = providers.values()[0] if not provider_requires_login_page(provider): return provider return None
def get_provider_name_by_endpoint(openid_url): """returns the provider name by endpoint url Pair the openid_url with endpoint urls defined for different openid providers. Returns None if no matching url was found. """ parsed_uri = urllib.parse.urlparse(openid_url) base_url = '{uri.scheme}://{uri.netloc}'.format(uri=parsed_uri) providers = get_enabled_login_providers() for provider_data in providers.values(): openid_url_match = (provider_data['type'].startswith('openid') and provider_data['openid_endpoint'] is not None and provider_data['openid_endpoint'].startswith(base_url)) if openid_url_match: return provider_data['name'] return None