X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct.pm;h=3e264e6a30e782015282c18a897c78047fc5b569;hb=2b311f86e0560428f34d798fe95161dab52e321e;hp=649a78347f19dcaee58af3742e6d5f511838a94f;hpb=557a6bdc1302aa7addd313327dcf62bbc0533429;p=freeside.git diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index 649a78347..3e264e6a3 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -436,13 +436,7 @@ sub search_sql { $class->search_sql_field('username', $string ). ' ) '; } else { - ' ( '. - $class->search_sql_field('username', $string). - ( $string =~ /^\d+$/ - ? 'OR '. $class->search_sql_field('svcnum', $string) - : '' - ). - ' ) '; + $class->search_sql_field('username', $string); } } @@ -1184,13 +1178,14 @@ sub check { # First, if _password is blank, generate one and set default encoding. if ( ! $recref->{_password} ) { - $self->set_password(''); + $error = $self->set_password(''); } # But if there's a _password but no encoding, assume it's plaintext and # set it to default encoding. elsif ( ! $recref->{_password_encoding} ) { - $self->set_password($recref->{_password}); + $error = $self->set_password($recref->{_password}); } + return $error if $error; # Next, check _password to ensure compliance with the encoding. if ( $recref->{_password_encoding} eq 'ldap' ) { @@ -1232,11 +1227,8 @@ sub check { $recref->{_password} =~ /\!/ and return gettext('illegal_password'); } } - elsif ( $recref->{_password_encoding} eq 'legacy' ) { - # this happens when set_password fails - return gettext('illegal_password'). " $passwordmin-$passwordmax ". - FS::Msgcat::_gettext('illegal_password_characters'). - ": ". $recref->{_password}; + else { + return "invalid password encoding ('".$recref->{_password_encoding}."'"; } $self->SUPER::check; @@ -1300,7 +1292,14 @@ sub set_password { my $self = shift; my $pass = shift; my ($encoding, $encryption); + my $failure = gettext('illegal_password'). " $passwordmin-$passwordmax ". + FS::Msgcat::_gettext('illegal_password_characters'). + ": ". $pass; + if(($passwordmin and length($pass) < $passwordmin) or + ($passwordmax and length($pass) > $passwordmax)) { + return $failure; + } if($self->_password_encoding) { $encoding = $self->_password_encoding; @@ -1344,7 +1343,7 @@ sub set_password { $self->_password_encoding('crypt'); } else { - # do nothing; check() will recognize this as an error + return $failure; } } } @@ -2117,8 +2116,8 @@ sub set_usage { #$self->snapshot; #not necessary, we retain the old values #create an object with the updated usage values my $new = qsearchs('svc_acct', { 'svcnum' => $self->svcnum }); - #call exports - my $error = $new->replace($self); + local($FS::Record::nowarn_identical) = 1; + my $error = $new->replace($self); #call exports if ( $error ) { $dbh->rollback if $oldAutoCommit; return "Error replacing: $error";