mirror of
https://github.com/quay/quay.git
synced 2026-01-27 18:42:52 +03:00
31 lines
1.3 KiB
Python
31 lines
1.3 KiB
Python
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, validator_context):
|
|
config = validator_context.config
|
|
client = validator_context.http_client
|
|
|
|
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)
|
|
|
|
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)
|
|
|
|
if not config.get("FEATURE_USER_CREATION", True) and config.get(
|
|
"FEATURE_INVITE_ONLY_USER_CREATION", False
|
|
):
|
|
msg = "Invite only user creation requires user creation to be enabled"
|
|
raise ConfigValidationException(msg)
|