SNMP export to service ip address, #14669
[freeside.git] / FS / FS / part_export / sqlradius.pm
index 4dea80e..c51429d 100644 (file)
@@ -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);