diff options
author | Michael Scherer <misc@mageia.org> | 2011-07-21 16:50:26 +0000 |
---|---|---|
committer | Michael Scherer <misc@mageia.org> | 2011-07-21 16:50:26 +0000 |
commit | 6d861e125dff8edccdf6f4070fbb4642d0cd5c89 (patch) | |
tree | b02a70ff8f1ecf645b8fa31cfa43df932914e4a8 /lib/CatDap/Controller | |
parent | f8cfe86f01dbc9070a2541d541baeb04b7595f7f (diff) | |
download | identity-6d861e125dff8edccdf6f4070fbb4642d0cd5c89.tar identity-6d861e125dff8edccdf6f4070fbb4642d0cd5c89.tar.gz identity-6d861e125dff8edccdf6f4070fbb4642d0cd5c89.tar.bz2 identity-6d861e125dff8edccdf6f4070fbb4642d0cd5c89.tar.xz identity-6d861e125dff8edccdf6f4070fbb4642d0cd5c89.zip |
refactor the ldap query, and do it sooner so we can use it for access control
Diffstat (limited to 'lib/CatDap/Controller')
-rw-r--r-- | lib/CatDap/Controller/admin.pm | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/lib/CatDap/Controller/admin.pm b/lib/CatDap/Controller/admin.pm index 814475f..452efd9 100644 --- a/lib/CatDap/Controller/admin.pm +++ b/lib/CatDap/Controller/admin.pm @@ -619,17 +619,25 @@ sub group_modify : Local { my @errors; my @entries; my $mesg; + $c->detach('/admin/group') if $group eq ''; if ( $group !~ /^[\w\d- ]*$/ ) { push @errors, $c->loc('Group contains illegal characters'); $c->detach('/admin/group'); } + + my $mesg_group = $c->model('user')->search("(&(objectClass=groupOfNames)(cn=$group))"); + if ( $mesg_group->entries gt 1 ) { + push @errors, $c->loc('More than one entry matched'); + $c->detach('/admin/group'); + } + if (defined $op and $op eq 'delete') { - $mesg = $c->model('user')->search("(&(objectClass=groupOfNames)(cn=$group))"); - @entries = $mesg->entries; + @entries = $mesg_group->entries; $entries[0]->delete( $attr => $value)->update; $c->res->redirect("/admin/group_modify/$group"); - } + } + if ( defined $op and $op eq 'add' ) { my $member = $c->req->param('member'); $mesg = $c->model('user')->search("(uid=$member)"); @@ -642,17 +650,12 @@ sub group_modify : Local { } @entries = $mesg->entries; my $dn = $entries[0]->dn; - $mesg = $c->model('user')->search("(&(objectClass=groupOfNames)(cn=$group))"); - @entries = $mesg->entries; + @entries = $mesg_group->entries; $entries[0]->add( 'member' => $dn )->update; $c->res->redirect("/admin/group_modify/$group"); } - $mesg = $c->model('user')->search("(&(objectClass=groupOfNames)(cn=$group))"); - if ( $mesg->entries gt 1 ) { - push @errors, $c->loc('More than one entry matched'); - $c->detach('/admin/group'); - } - $c->stash( group => $mesg->entry ); + + $c->stash( group => $mesg_group->entry ); } =head2 index |