summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjeff <jeff>2007-06-08 17:38:56 +0000
committerjeff <jeff>2007-06-08 17:38:56 +0000
commit91952e0bd788ba498de9a69dd4226061ec840102 (patch)
tree8535ae804383e222cea8d9e815fc20f4f51f3c3f
parent1f3efc87af2c179695329c48cda890ccc223e709 (diff)
prevent multiple additions to usergroup table (work around #1606)
-rw-r--r--FS/FS/part_export/sqlradius.pm7
1 files changed, 7 insertions, 0 deletions
diff --git a/FS/FS/part_export/sqlradius.pm b/FS/FS/part_export/sqlradius.pm
index 139f400..114ca0b 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;
}