diff options
Diffstat (limited to 'app/models/concerns/restricted_signup.rb')
-rw-r--r-- | app/models/concerns/restricted_signup.rb | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/app/models/concerns/restricted_signup.rb b/app/models/concerns/restricted_signup.rb index 587f8c35ff7..cf97be21165 100644 --- a/app/models/concerns/restricted_signup.rb +++ b/app/models/concerns/restricted_signup.rb @@ -7,15 +7,49 @@ module RestrictedSignup def validate_admin_signup_restrictions(email) return if allowed_domain?(email) + error_type = fetch_error_type(email) + + return unless error_type.present? + + [ + signup_email_invalid_message, + error_message[created_by_key][error_type] + ].join(' ') + end + + def fetch_error_type(email) if allowlist_present? - return _('domain is not authorized for sign-up.') + :allowlist elsif denied_domain?(email) - return _('is not from an allowed domain.') + :denylist elsif restricted_email?(email) - return _('is not allowed. Try again with a different email address, or contact your GitLab admin.') + :restricted end + end + + def error_message + { + admin: { + allowlist: html_escape_once(_("Go to the 'Admin area > Sign-up restrictions', and check 'Allowed domains for sign-ups'.")).html_safe, + denylist: html_escape_once(_("Go to the 'Admin area > Sign-up restrictions', and check the 'Domain denylist'.")).html_safe, + restricted: html_escape_once(_("Go to the 'Admin area > Sign-up restrictions', and check 'Email restrictions for sign-ups'.")).html_safe, + group_setting: html_escape_once(_("Go to the group’s 'Settings > General' page, and check 'Restrict membership by email domain'.")).html_safe + }, + nonadmin: { + allowlist: error_nonadmin, + denylist: error_nonadmin, + restricted: error_nonadmin, + group_setting: error_nonadmin + } + } + end + + def error_nonadmin + _("Check with your administrator.") + end - nil + def created_by_key + created_by&.can_admin_all_resources? ? :admin : :nonadmin end def denied_domain?(email) |