$passwordmin = ( defined($passwordmin) && $passwordmin =~ /\d+/ )
? $passwordmin
: 6;
- $passwordmax = $conf->config('passwordmax') || 8;
+ $passwordmax = $conf->config('passwordmax') || 12;
$username_letter = $conf->exists('username-letter');
$username_letterfirst = $conf->exists('username-letterfirst');
$username_noperiod = $conf->exists('username-noperiod');
disable_inventory => 1,
},
'_password' => { label => 'Password',
- required => 1
+ #required => 1
},
'gid' => {
label => 'GID',
# slight false laziness w/ edit/process/cust_main.cgi...
# and also slightly arbitrary behavior.
- # if the "real name" of this account matches the first + last name
- # of a contact, attach the email address to that person.
- my @contacts = map { $_->contact } $cust_main->cust_contact;
- my $myname = $self->get('finger');
- my ($contact) =
- grep { $_->get('first') . ' ' . $_->get('last') eq $myname } @contacts;
- # otherwise just pick the first one
- $contact ||= $contacts[0];
+ #
+ # this will never happen but check it anyway
+ my ($contact) = map { $_->contact }
+ qsearch('contact_email', { emailaddress => $self->email });
+
+ if (!$contact) {
+ # if the "real name" of this account matches the first + last name
+ # of a contact, attach the email address to that person.
+ my @contacts = map { $_->contact } $cust_main->cust_contact;
+ my $myname = $self->get('finger');
+ my ($contact) =
+ grep { $_->get('first') . ' ' . $_->get('last') eq $myname } @contacts;
+ # otherwise just pick the first one
+ $contact = $contacts[0];
+ }
# if there is one
$contact ||= FS::contact->new({
'custnum' => $cust_main->get('custnum'),
$self->domain. '/maildirs/'. $self->username. '/';
}
-=item password_disallowed_names
+=item password_svc_check
Override, for L<FS::Password_Mixin>. Not really intended for other use.
=cut
-sub password_disallowed_names {
- my $self = shift;
- my $dbh = dbh;
- my $results = {};
- foreach my $field ( qw( username finger ) ) {
- my $sql = 'SELECT DISTINCT '.$field.' FROM svc_acct';
- my $sth = $dbh->prepare($sql)
- or die "Error preparing $sql: ". $dbh->errstr;
- $sth->execute()
- or die "Error executing $sql: ". $sth->errstr;
- foreach my $row (@{$sth->fetchall_arrayref}, $self->get($field)) {
- foreach my $word (split(/\s+/,$$row[0])) {
- $results->{lc($word)} = 1;
+sub password_svc_check {
+ my ($self, $password) = @_;
+ foreach my $field ( qw(username finger) ) {
+ foreach my $word (split(/\W+/,$self->get($field))) {
+ next unless length($word) > 2;
+ if ($password =~ /$word/i) {
+ return qq(Password contains account information '$word');
}
}
}
- return keys %$results;
+ return '';
}
=back