X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct.pm;h=1e30a0fece761e34a322034c503a4abfb044732e;hb=3d4905406e586b355ef5b0240325e789783d2b9c;hp=ddd6aa9da30148eef87c3c216b234d4c42d73a66;hpb=f4c5c0a244d4cb9ee80f72e909b090b3e71eea2d;p=freeside.git diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index ddd6aa9da..1e30a0fec 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -7,6 +7,7 @@ use vars qw( @ISA $DEBUG $me $conf $username_ampersand $username_letter $username_letterfirst $username_noperiod $username_nounderscore $username_nodash $username_uppercase + $password_noampersand $password_noexclamation $welcome_template $welcome_from $welcome_subject $welcome_mimetype $smtpmachine $radius_password $radius_ip @@ -55,6 +56,8 @@ $FS::UID::callback{'FS::svc_acct'} = sub { $username_nodash = $conf->exists('username-nodash'); $username_uppercase = $conf->exists('username-uppercase'); $username_ampersand = $conf->exists('username-ampersand'); + $password_noampersand = $conf->exists('password-noexclamation'); + $password_noexclamation = $conf->exists('password-noexclamation'); $dirhash = $conf->config('dirhash') || 0; if ( $conf->exists('welcome_email') ) { $welcome_template = new Text::Template ( @@ -237,7 +240,7 @@ sub insert { $self->svcpart($cust_svc->svcpart); } - my $error = $self->_check_duplicate; + $error = $self->_check_duplicate; if ( $error ) { $dbh->rollback if $oldAutoCommit; return $error; @@ -683,6 +686,12 @@ sub check { unless ( $username_ampersand ) { $recref->{username} =~ /\&/ and return gettext('illegal_username'); } + if ( $password_noampersand ) { + $recref->{_password} =~ /\&/ and return gettext('illegal_password'); + } + if ( $password_noexclamation ) { + $recref->{_password} =~ /\!/ and return gettext('illegal_password'); + } $recref->{popnum} =~ /^(\d*)$/ or return "Illegal popnum: ".$recref->{popnum}; $recref->{popnum} = $1; @@ -863,12 +872,12 @@ sub _check_duplicate { my $global_unique = $conf->config('global_unique-username'); - my @dup_user = grep { $svcpart != $_->svcpart } + my @dup_user = grep { !$self->svcnum || $_->svcnum != $self->svcnum } qsearch( 'svc_acct', { 'username' => $self->username } ); return gettext('username_in_use') if $global_unique eq 'username' && @dup_user; - my @dup_userdomain = grep { $svcpart != $_->svcpart } + my @dup_userdomain = grep { !$self->svcnum || $_->svcnum != $self->svcnum } qsearch( 'svc_acct', { 'username' => $self->username, 'domsvc' => $self->domsvc } ); return gettext('username_in_use')