X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct.pm;h=6bb67af08139b5956b5ab9833b40ac3b2ae5e077;hb=8c4fb61d3ab13ca97f9fe037555087506435d9da;hp=9323976cb1ae0d61fc1b4206523ad8e6687fec96;hpb=b2fd002f3285b70311642f8ff0025598d42bd16e;p=freeside.git diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index 9323976cb..6bb67af08 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -72,7 +72,7 @@ FS::UID->install_callback( sub { $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'); @@ -297,7 +297,7 @@ sub table_info { disable_inventory => 1, }, '_password' => { label => 'Password', - required => 1 + #required => 1 }, 'gid' => { label => 'GID', @@ -713,14 +713,21 @@ sub insert { # 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'), @@ -2676,6 +2683,25 @@ sub virtual_maildir { $self->domain. '/maildirs/'. $self->username. '/'; } +=item password_svc_check + +Override, for L. Not really intended for other use. + +=cut + +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 ''; +} + =back =head1 CLASS METHODS