X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2FFS%2Fpart_export%2Fsqlradius.pm;h=c51429de21373087fd82acdfe2a51d1ca116282e;hb=b32add7af23037841dff080e73c849d603c3f516;hp=4dea80e494cd7b03c91b71733f99f45710de1948;hpb=4665d5af02f915679207a369222472a25e137c9d;p=freeside.git diff --git a/FS/FS/part_export/sqlradius.pm b/FS/FS/part_export/sqlradius.pm index 4dea80e49..c51429de2 100644 --- a/FS/FS/part_export/sqlradius.pm +++ b/FS/FS/part_export/sqlradius.pm @@ -251,20 +251,24 @@ sub _export_suspend { local $FS::UID::AutoCommit = 0; my $dbh = dbh; - my $err_or_queue = $self->sqlradius_queue( $new->svcnum, 'insert', - 'check', $self->export_username($new), $new->radius_check ); - unless ( ref($err_or_queue) ) { - $dbh->rollback if $oldAutoCommit; - return $err_or_queue; + my @newgroups = $self->suspended_usergroups($svc_acct); + + unless (@newgroups) { #don't change password if assigning to a suspended group + + my $err_or_queue = $self->sqlradius_queue( $new->svcnum, 'insert', + 'check', $self->export_username($new), $new->radius_check ); + unless ( ref($err_or_queue) ) { + $dbh->rollback if $oldAutoCommit; + return $err_or_queue; + } + } - my $error; - my (@newgroups) = $self->suspended_usergroups($svc_acct); - $error = + my $error = $self->sqlreplace_usergroups( $new->svcnum, $self->export_username($new), '', - $svc_acct->usergroup, + [ $svc_acct->radius_groups ], \@newgroups, ); if ( $error ) { @@ -303,7 +307,7 @@ sub _export_unsuspend { $self->export_username($svc_acct), '', \@oldgroups, - $svc_acct->usergroup, + [ $svc_acct->radius_groups ], ); if ( $error ) { $dbh->rollback if $oldAutoCommit; @@ -354,7 +358,7 @@ sub suspended_usergroups { if (!$userspec && exists($reasonmap{$r->reason})); } my $suspend_user; - if ($userspec =~ /^d+$/ ){ + if ($userspec =~ /^\d+$/ ){ $suspend_user = qsearchs( 'svc_acct', { 'svcnum' => $userspec } ); }elsif ($userspec =~ /^\S+\@\S+$/){ my ($username,$domain) = split(/\@/, $userspec);