use FS::raddb;
use FS::queue;
use FS::radius_usergroup;
+use FS::Msgcat qw(gettext);
@ISA = qw( FS::svc_Common );
=item _password - generated if blank
+=item sec_phrase - security phrase
+
=item popnum - Point of presence (see L<FS::svc_acct_pop>)
=item uid
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,
} );
}
}
+ my $part_svc = $self->cust_svc->part_svc;
+
my $error = $self->SUPER::delete;
if ( $error ) {
$dbh->rollback if $oldAutoCommit;
#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;
}
$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";
}
}
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};
$recref->{_password} = '!!';
} else {
#return "Illegal password";
- return "Illegal password: ". $recref->{_password};
+ return gettext('illegal_password'). ": ". $recref->{_password};
}
''; #no error