diff options
author | jeff <jeff> | 2007-06-08 17:38:56 +0000 |
---|---|---|
committer | jeff <jeff> | 2007-06-08 17:38:56 +0000 |
commit | 91952e0bd788ba498de9a69dd4226061ec840102 (patch) | |
tree | 8535ae804383e222cea8d9e815fc20f4f51f3c3f /FS | |
parent | 1f3efc87af2c179695329c48cda890ccc223e709 (diff) |
prevent multiple additions to usergroup table (work around #1606)
Diffstat (limited to 'FS')
-rw-r--r-- | FS/FS/part_export/sqlradius.pm | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/FS/FS/part_export/sqlradius.pm b/FS/FS/part_export/sqlradius.pm index 139f4001f..114ca0b1f 100644 --- a/FS/FS/part_export/sqlradius.pm +++ b/FS/FS/part_export/sqlradius.pm @@ -374,10 +374,17 @@ sub sqlradius_usergroup_insert { #subroutine, not method my $dbh = sqlradius_connect(shift, shift, shift); my( $username, @groups ) = @_; + my $s_sth = $dbh->prepare( + "SELECT COUNT(*) FROM usergroup WHERE UserName = ? AND GroupName = ?" + ) or die $dbh->errstr; + my $sth = $dbh->prepare( "INSERT INTO usergroup ( UserName, GroupName ) VALUES ( ?, ? )" ) or die $dbh->errstr; + foreach my $group ( @groups ) { + $s_sth->execute( $username, $group ) or die $s_sth->errstr; + next if $s_sth->fetchrow_arrayref->[0]; $sth->execute( $username, $group ) or die "can't insert into groupname table: ". $sth->errstr; } |