Modify type (#2266)

This commit is contained in:
Christophe Maudoux 2020-08-29 20:13:11 +02:00
parent 0a4812203c
commit 7a9020ff25
6 changed files with 18 additions and 12 deletions

View File

@ -2485,10 +2485,7 @@ m[^(?:ldapi://[^/]*/?|\w[\w\-\.]*(?::\d{1,5})?|ldap(?:s|\+tls)?://\w[\w\-\.]*(?:
}, },
'passwordPolicy' => { 'passwordPolicy' => {
'default' => 1, 'default' => 1,
'test' => sub { 'type' => 'boolOrExpr'
return perlExpr(@_);
},
'type' => 'text'
}, },
'passwordPolicyMinDigit' => { 'passwordPolicyMinDigit' => {
'default' => 0, 'default' => 0,

View File

@ -1455,8 +1455,7 @@ sub attributes {
documentation => 'Hide old password in portal', documentation => 'Hide old password in portal',
}, },
passwordPolicy => { passwordPolicy => {
type => 'text', type => 'boolOrExpr',
test => sub { return perlExpr(@_) },
default => 1, default => 1,
documentation => 'Enable password policy', documentation => 'Enable password policy',
}, },

View File

@ -79,6 +79,7 @@ sub tree {
'portalRequireOldPassword', 'portalRequireOldPassword',
'hideOldPassword', 'hideOldPassword',
'mailOnPasswordChange', 'mailOnPasswordChange',
'passwordPolicy',
'passwordPolicyMinSize', 'passwordPolicyMinSize',
'passwordPolicyMinLower', 'passwordPolicyMinLower',
'passwordPolicyMinUpper', 'passwordPolicyMinUpper',

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -42,17 +42,26 @@ sub _modifyPassword {
return PE_PASSWORD_MISMATCH return PE_PASSWORD_MISMATCH
unless ( $req->data->{newpassword} eq $req->param('confirmpassword') ); unless ( $req->data->{newpassword} eq $req->param('confirmpassword') );
my $rule = $self->p->HANDLER->buildSub( my $oldPwdRule = $self->p->HANDLER->buildSub(
$self->p->HANDLER->substitute( $self->p->HANDLER->substitute(
$self->conf->{portalRequireOldPassword} $self->conf->{portalRequireOldPassword}
) )
); );
unless ($rule) { unless ($oldPwdRule) {
my $error = $self->p->HANDLER->tsv->{jail}->error || '???';
}
my $pwdPolicyRule = $self->p->HANDLER->buildSub(
$self->p->HANDLER->substitute(
$self->conf->{passwordPolicy}
)
);
unless ($pwdPolicyRule) {
my $error = $self->p->HANDLER->tsv->{jail}->error || '???'; my $error = $self->p->HANDLER->tsv->{jail}->error || '???';
} }
# Check if portal require old password # Check if portal require old password
if ( $rule->( $req, $req->userData ) or $requireOldPwd ) { if ( $oldPwdRule->( $req, $req->userData ) or $requireOldPwd ) {
# TODO: verify oldpassword # TODO: verify oldpassword
unless ( $req->data->{oldpassword} = $req->param('oldpassword') ) { unless ( $req->data->{oldpassword} = $req->param('oldpassword') ) {
@ -66,7 +75,7 @@ sub _modifyPassword {
} }
my $cpq = my $cpq =
$self->conf->{passwordPolicy} $pwdPolicyRule->( $req, $req->userData )
? $self->checkPasswordQuality( $req->data->{newpassword} ) ? $self->checkPasswordQuality( $req->data->{newpassword} )
: PE_OK; : PE_OK;
return $cpq unless ( $cpq == PE_OK ); return $cpq unless ( $cpq == PE_OK );