- if ( length($self->_password) < 13 ) { #plaintext
- $check_password eq $self->_password;
- } elsif ( length($self->_password) == 13 ) { #traditional DES crypt
- crypt($check_password, $self->_password) eq $self->_password;
- } elsif ( $self->_password =~ /^\$1\$/ ) { #MD5 crypt
- unix_md5_crypt($check_password, $self->_password) eq $self->_password;
- } elsif ( $self->_password =~ /^\$2a?\$/ ) { #Blowfish
+ if ( $password =~ /^(\*|!!?)$/ ) { #no self-service login
+ return 0;
+ } elsif ( length($password) < 13 ) { #plaintext
+ $check_password eq $password;
+ } elsif ( length($password) == 13 ) { #traditional DES crypt
+ crypt($check_password, $password) eq $password;
+ } elsif ( $password =~ /^\$1\$/ ) { #MD5 crypt
+ unix_md5_crypt($check_password, $password) eq $password;
+ } elsif ( $password =~ /^\$2a?\$/ ) { #Blowfish