X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FAuth.pm;h=97f1d8270280d0564dd0ea18d517225fe09ce418;hb=1043d7f814fccf5864e677b1e38577d0a150026c;hp=be1b4c5df77d17108ab6c863b1bf859e02eee127;hpb=94beb18a8c25fbb01f3599e054382e5ce9683583;p=kivitendo-erp.git diff --git a/SL/Auth.pm b/SL/Auth.pm index be1b4c5df..97f1d8270 100644 --- a/SL/Auth.pm +++ b/SL/Auth.pm @@ -11,6 +11,7 @@ use constant SESSION_EXPIRED => 2; use Digest::MD5 qw(md5_hex); use IO::File; use Time::HiRes qw(gettimeofday); +use List::MoreUtils qw(uniq); use SL::Auth::DB; use SL::Auth::LDAP; @@ -358,7 +359,7 @@ sub read_user { my $login = shift; my $dbh = $self->dbconnect(); - my $query = qq|SELECT u.id, cfg.cfg_key, cfg.cfg_value + my $query = qq|SELECT u.id, u.login, cfg.cfg_key, cfg.cfg_value FROM auth.user_config cfg LEFT JOIN auth."user" u ON (cfg.user_id = u.id) WHERE (u.login = ?)|; @@ -704,13 +705,14 @@ sub read_groups { $sth = prepare_query($form, $dbh, $query); foreach $group (values %{$groups}) { - $group->{members} = []; + my @members; do_statement($form, $sth, $query, $group->{id}); while ($row = $sth->fetchrow_hashref()) { - push @{$group->{members}}, $row->{user_id}; + push @members, $row->{user_id}; } + $group->{members} = [ uniq @members ]; } $sth->finish(); @@ -760,7 +762,7 @@ sub save_group { $query = qq|INSERT INTO auth.user_group (user_id, group_id) VALUES (?, ?)|; $sth = prepare_query($form, $dbh, $query); - foreach my $user_id (@{ $group->{members} }) { + foreach my $user_id (uniq @{ $group->{members} }) { do_statement($form, $sth, $query, $user_id, $group->{id}); } $sth->finish();