from app import app from util.config.validators import BaseValidator, ConfigValidationException from oauth.loginmanager import OAuthLoginManager from oauth.oidc import OIDCLoginService class AccessSettingsValidator(BaseValidator): name = "access" @classmethod def validate(cls, config, user, user_password): if not config.get('FEATURE_DIRECT_LOGIN', True): # Make sure we have at least one OIDC enabled. github_login = config.get('FEATURE_GITHUB_LOGIN', False) google_login = config.get('FEATURE_GOOGLE_LOGIN', False) client = app.config['HTTPCLIENT'] login_manager = OAuthLoginManager(config, client=client) custom_oidc = [s for s in login_manager.services if isinstance(s, OIDCLoginService)] if not github_login and not google_login and not custom_oidc: msg = 'Cannot disable credentials login to UI without configured OIDC service' raise ConfigValidationException(msg)