diff options
Diffstat (limited to 'Bugzilla/Config/Auth.pm')
-rw-r--r-- | Bugzilla/Config/Auth.pm | 400 |
1 files changed, 177 insertions, 223 deletions
diff --git a/Bugzilla/Config/Auth.pm b/Bugzilla/Config/Auth.pm index 965d922d7..664c1b263 100644 --- a/Bugzilla/Config/Auth.pm +++ b/Bugzilla/Config/Auth.pm @@ -18,241 +18,195 @@ use Types::Common::Numeric qw(PositiveInt); our $sortkey = 300; sub get_param_list { - my $class = shift; - my @param_list = ( - { - name => 'auth_env_id', - type => 't', - default => '', - }, - - { - name => 'auth_env_email', - type => 't', - default => '', - }, - - { - name => 'auth_env_realname', - type => 't', - default => '', - }, - - # XXX in the future: - # - # user_verify_class and user_info_class should have choices gathered from - # whatever sits in their respective directories - # - # rather than comma-separated lists, these two should eventually become - # arrays, but that requires alterations to editparams first - - { - name => 'user_info_class', - type => 's', - choices => [ 'CGI', 'Env', 'Env,CGI' ], - default => 'CGI', - checker => \&check_multi - }, - - { - name => 'user_verify_class', - type => 'o', - choices => [ 'DB', 'RADIUS', 'LDAP' ], - default => 'DB', - checker => \&check_user_verify_class - }, - - { - name => 'rememberlogin', - type => 's', - choices => [ 'on', 'defaulton', 'defaultoff', 'off' ], - default => 'on', - checker => \&check_multi - }, - - { - name => 'requirelogin', - type => 'b', - default => '0' - }, - - { - name => 'webservice_email_filter', - type => 'b', - default => 0 - }, - - { - name => 'emailregexp', - type => 't', - default => q:^[\\w\\.\\+\\-=]+@[\\w\\.\\-]+\\.[\\w\\-]+$:, - checker => \&check_regexp - }, - - { - name => 'emailregexpdesc', - type => 'l', - default => 'A legal address must contain exactly one \'@\', and at least ' . 'one \'.\' after the @.' - }, - - { - name => 'emailsuffix', - type => 't', - default => '' - }, - - { - name => 'createemailregexp', - type => 't', - default => q:.*:, - checker => \&check_regexp - }, - - { - name => 'password_complexity', - type => 's', - choices => [ 'no_constraints', 'bmo' ], - default => 'no_constraints', - checker => \&check_multi - }, - - { - name => 'password_check_on_login', - type => 'b', - default => '1' - }, - - { - name => 'passwdqc_min', - type => 't', - default => 'undef, 24, 11, 8, 7', - checker => \&_check_passwdqc_min, - }, - - { - name => 'passwdqc_max', - type => 't', - default => '40', - checker => \&_check_passwdqc_max, - }, - - { - name => 'passwdqc_passphrase_words', - type => 't', - default => '3', - checker => \&check_numeric, - }, - - { - name => 'passwdqc_match_length', - type => 't', - default => '4', - checker => \&check_numeric, - }, - - { - name => 'passwdqc_random_bits', - type => 't', - default => '47', - checker => \&_check_passwdqc_random_bits, - }, - - { - name => 'passwdqc_desc', - type => 'l', - default => 'The password must be complex.', - }, - - { - name => 'auth_delegation', - type => 'b', - default => 0, - }, - - { - name => 'duo_host', - type => 't', - default => '', - }, - { - name => 'duo_akey', - type => 't', - default => '', - }, - { - name => 'duo_ikey', - type => 't', - default => '', - }, - { - name => 'duo_skey', - type => 't', - default => '', - }, - - { - name => 'mfa_group', - type => 's', - choices => \&get_all_group_names, - default => '', - checker => \&check_group, - }, - - { - name => 'mfa_group_grace_period', - type => 't', - default => '7', - checker => \&check_numeric, - } - ); - return @param_list; + my $class = shift; + my @param_list = ( + {name => 'auth_env_id', type => 't', default => '',}, + + {name => 'auth_env_email', type => 't', default => '',}, + + {name => 'auth_env_realname', type => 't', default => '',}, + + # XXX in the future: + # + # user_verify_class and user_info_class should have choices gathered from + # whatever sits in their respective directories + # + # rather than comma-separated lists, these two should eventually become + # arrays, but that requires alterations to editparams first + + { + name => 'user_info_class', + type => 's', + choices => ['CGI', 'Env', 'Env,CGI'], + default => 'CGI', + checker => \&check_multi + }, + + { + name => 'user_verify_class', + type => 'o', + choices => ['DB', 'RADIUS', 'LDAP'], + default => 'DB', + checker => \&check_user_verify_class + }, + + { + name => 'rememberlogin', + type => 's', + choices => ['on', 'defaulton', 'defaultoff', 'off'], + default => 'on', + checker => \&check_multi + }, + + {name => 'requirelogin', type => 'b', default => '0'}, + + {name => 'webservice_email_filter', type => 'b', default => 0}, + + { + name => 'emailregexp', + type => 't', + default => q:^[\\w\\.\\+\\-=]+@[\\w\\.\\-]+\\.[\\w\\-]+$:, + checker => \&check_regexp + }, + + { + name => 'emailregexpdesc', + type => 'l', + default => 'A legal address must contain exactly one \'@\', and at least ' + . 'one \'.\' after the @.' + }, + + {name => 'emailsuffix', type => 't', default => ''}, + + { + name => 'createemailregexp', + type => 't', + default => q:.*:, + checker => \&check_regexp + }, + + { + name => 'password_complexity', + type => 's', + choices => ['no_constraints', 'bmo'], + default => 'no_constraints', + checker => \&check_multi + }, + + {name => 'password_check_on_login', type => 'b', default => '1'}, + + { + name => 'passwdqc_min', + type => 't', + default => 'undef, 24, 11, 8, 7', + checker => \&_check_passwdqc_min, + }, + + { + name => 'passwdqc_max', + type => 't', + default => '40', + checker => \&_check_passwdqc_max, + }, + + { + name => 'passwdqc_passphrase_words', + type => 't', + default => '3', + checker => \&check_numeric, + }, + + { + name => 'passwdqc_match_length', + type => 't', + default => '4', + checker => \&check_numeric, + }, + + { + name => 'passwdqc_random_bits', + type => 't', + default => '47', + checker => \&_check_passwdqc_random_bits, + }, + + { + name => 'passwdqc_desc', + type => 'l', + default => 'The password must be complex.', + }, + + {name => 'auth_delegation', type => 'b', default => 0,}, + + {name => 'duo_host', type => 't', default => '',}, + {name => 'duo_akey', type => 't', default => '',}, + {name => 'duo_ikey', type => 't', default => '',}, + {name => 'duo_skey', type => 't', default => '',}, + + { + name => 'mfa_group', + type => 's', + choices => \&get_all_group_names, + default => '', + checker => \&check_group, + }, + + { + name => 'mfa_group_grace_period', + type => 't', + default => '7', + checker => \&check_numeric, + } + ); + return @param_list; } -my $passwdqc_min = Tuple[ - Maybe[PositiveInt], - Maybe[PositiveInt], - Maybe[PositiveInt], - Maybe[PositiveInt], - Maybe[PositiveInt], +my $passwdqc_min = Tuple [ + Maybe [PositiveInt], + Maybe [PositiveInt], + Maybe [PositiveInt], + Maybe [PositiveInt], + Maybe [PositiveInt], ]; sub _check_passwdqc_min { - my ($value) = @_; - my @values = map { $_ eq 'undef' ? undef : $_ } split( /\s*,\s*/, $value ); - - unless ( $passwdqc_min->check( \@values ) ) { - return "must be list of five values, that are either integers > 0 or undef"; + my ($value) = @_; + my @values = map { $_ eq 'undef' ? undef : $_ } split(/\s*,\s*/, $value); + + unless ($passwdqc_min->check(\@values)) { + return "must be list of five values, that are either integers > 0 or undef"; + } + + my ($max, $max_pos); + my $pos = 0; + foreach my $value (@values) { + if (defined $max && defined $value) { + if ($value > $max) { + return "Int$pos is larger than Int$max_pos ($max)"; + } } - - my ( $max, $max_pos ); - my $pos = 0; - foreach my $value (@values) { - if ( defined $max && defined $value ) { - if ( $value > $max ) { - return "Int$pos is larger than Int$max_pos ($max)"; - } - } - elsif ( defined $value ) { - $max = $value; - $max_pos = $pos; - } - $pos++; + elsif (defined $value) { + $max = $value; + $max_pos = $pos; } - return ""; + $pos++; + } + return ""; } sub _check_passwdqc_max { - my ($value) = @_; - return "must be a positive integer" unless PositiveInt->check($value); - return "must be greater than 8" unless $value > 8; - return ""; + my ($value) = @_; + return "must be a positive integer" unless PositiveInt->check($value); + return "must be greater than 8" unless $value > 8; + return ""; } sub _check_passwdqc_random_bits { - my ($value) = @_; - return "must be a positive integer" unless PositiveInt->check($value); - return "must be between 24 and 85 inclusive" unless $value >= 24 && $value <= 85; - return ""; + my ($value) = @_; + return "must be a positive integer" unless PositiveInt->check($value); + return "must be between 24 and 85 inclusive" + unless $value >= 24 && $value <= 85; + return ""; } -1;
\ No newline at end of file +1; |