X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fsvc_acct.pm;h=38e24c11036ef813b968e44cbd554b29b7e31ce7;hb=e6ea57971831f25d682d97a0ba508c39b66ecd8b;hp=a3e97f74cf75e82ae5e5c7c491fb31d544900269;hpb=74e64d70361848f089aad9a7881c2af9caf6e479;p=freeside.git diff --git a/FS/FS/svc_acct.pm b/FS/FS/svc_acct.pm index a3e97f74c..38e24c110 100644 --- a/FS/FS/svc_acct.pm +++ b/FS/FS/svc_acct.pm @@ -28,6 +28,7 @@ use FS::svc_domain; use FS::raddb; use FS::queue; use FS::radius_usergroup; +use FS::Msgcat qw(gettext); @ISA = qw( FS::svc_Common ); @@ -170,6 +171,8 @@ FS::svc_Common. The following fields are currently supported: =item _password - generated if blank +=item sec_phrase - security phrase + =item popnum - Point of presence (see L) =item uid @@ -257,12 +260,10 @@ sub insert { local $FS::UID::AutoCommit = 0; my $dbh = dbh; - my $amount = 0; - $error = $self->check; return $error if $error; - return "Username ". $self->username. " in use" + return gettext('username_in_use'). ": ". $self->username if qsearchs( 'svc_acct', { 'username' => $self->username, 'domsvc' => $self->domsvc, } ); @@ -587,6 +588,8 @@ sub delete { } } + my $part_svc = $self->cust_svc->part_svc; + my $error = $self->SUPER::delete; if ( $error ) { $dbh->rollback if $oldAutoCommit; @@ -595,7 +598,7 @@ sub delete { #new-style exports! unless ( $noexport_hack ) { - foreach my $part_export ( $self->cust_svc->part_svc->part_export ) { + foreach my $part_export ( $part_svc->part_export ) { my $error = $part_export->export_delete($self); if ( $error ) { $dbh->rollback if $oldAutoCommit; @@ -791,34 +794,34 @@ sub replace { } $old->usergroup( [ $old->radius_groups ] ); - if ( $new->usergroup ) { - - foreach my $groupname ( @{$old->usergroup} ) { - if ( grep { $groupname eq $_ } @{$new->usergroup} ) { - $new->usergroup( [ grep { $groupname ne $_ } @{$new->usergroup} ] ); + #(sorta) false laziness with FS::part_export::sqlradius::_export_replace + my @newgroups = @{$new->usergroup}; + foreach my $oldgroup ( @{$old->usergroup} ) { + if ( grep { $oldgroup eq $_ } @newgroups ) { + @newgroups = grep { $oldgroup ne $_ } @newgroups; next; } my $radius_usergroup = qsearchs('radius_usergroup', { svcnum => $old->svcnum, - groupname => $groupname, + groupname => $oldgroup, } ); my $error = $radius_usergroup->delete; if ( $error ) { $dbh->rollback if $oldAutoCommit; - return "error deleting radius_usergroup $groupname: $error"; + return "error deleting radius_usergroup $oldgroup: $error"; } } - foreach my $groupname ( @{$new->usergroup} ) { + foreach my $newgroup ( @newgroups ) { my $radius_usergroup = new FS::radius_usergroup ( { svcnum => $new->svcnum, - groupname => $groupname, + groupname => $newgroup, } ); my $error = $radius_usergroup->insert; if ( $error ) { $dbh->rollback if $oldAutoCommit; - return "error adding radius_usergroup $groupname: $error"; + return "error adding radius_usergroup $newgroup: $error"; } } @@ -1072,32 +1075,38 @@ sub check { return $x unless ref($x); my $part_svc = $x; + if ( $part_svc->part_svc_column('usergroup')->columnflag eq "F" ) { + $self->usergroup( + [ split(',', $part_svc->part_svc_column('usergroup')->columnvalue) ] ); + } + my $error = $self->ut_numbern('svcnum') || $self->ut_number('domsvc') + || $self->ut_textn('sec_phrase') ; return $error if $error; my $ulen = $usernamemax || $self->dbdef_table->column('username')->length; if ( $username_uppercase ) { $recref->{username} =~ /^([a-z0-9_\-\.\&]{$usernamemin,$ulen})$/i - or return "Illegal username: ". $recref->{username}; + or return gettext('illegal_username'). ": ". $recref->{username}; $recref->{username} = $1; } else { $recref->{username} =~ /^([a-z0-9_\-\.\&]{$usernamemin,$ulen})$/ - or return "Illegal username: ". $recref->{username}; + or return gettext('illegal_username'). ": ". $recref->{username}; $recref->{username} = $1; } if ( $username_letterfirst ) { - $recref->{username} =~ /^[a-z]/ or return "Illegal username"; + $recref->{username} =~ /^[a-z]/ or return gettext('illegal_username'); } elsif ( $username_letter ) { - $recref->{username} =~ /[a-z]/ or return "Illegal username"; + $recref->{username} =~ /[a-z]/ or return gettext('illegal_username'); } if ( $username_noperiod ) { - $recref->{username} =~ /\./ and return "Illegal username"; + $recref->{username} =~ /\./ and return gettext('illegal_username'); } unless ( $username_ampersand ) { - $recref->{username} =~ /\&/ and return "Illegal username"; + $recref->{username} =~ /\&/ and return gettext('illegal_username'); } $recref->{popnum} =~ /^(\d*)$/ or return "Illegal popnum: ".$recref->{popnum}; @@ -1213,7 +1222,7 @@ sub check { $recref->{_password} = '!!'; } else { #return "Illegal password"; - return "Illegal password: ". $recref->{_password}; + return gettext('illegal_password'). ": ". $recref->{_password}; } ''; #no error