aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CatDap/Controller
diff options
context:
space:
mode:
authorBuchan Milne <buchan@mageia.org>2011-08-29 10:12:45 +0000
committerBuchan Milne <buchan@mageia.org>2011-08-29 10:12:45 +0000
commite3cb88c37d7e8d894cc9c1b95c157bdb86815b15 (patch)
treed2dddeb22b25ae64065a3d782145f88c262399b7 /lib/CatDap/Controller
parentae74ec53d9e959ad269d533aed377f47372cd320 (diff)
parent420e9a02a8a0f4a685457889e95e867c128a563c (diff)
downloadidentity-e3cb88c37d7e8d894cc9c1b95c157bdb86815b15.tar
identity-e3cb88c37d7e8d894cc9c1b95c157bdb86815b15.tar.gz
identity-e3cb88c37d7e8d894cc9c1b95c157bdb86815b15.tar.bz2
identity-e3cb88c37d7e8d894cc9c1b95c157bdb86815b15.tar.xz
identity-e3cb88c37d7e8d894cc9c1b95c157bdb86815b15.zip
Merge branch 'master' into stable
Diffstat (limited to 'lib/CatDap/Controller')
-rw-r--r--lib/CatDap/Controller/admin.pm88
-rw-r--r--lib/CatDap/Controller/register.pm2
2 files changed, 71 insertions, 19 deletions
diff --git a/lib/CatDap/Controller/admin.pm b/lib/CatDap/Controller/admin.pm
index 7fd5539..6c93212 100644
--- a/lib/CatDap/Controller/admin.pm
+++ b/lib/CatDap/Controller/admin.pm
@@ -547,7 +547,7 @@ sub password : Local {
'content_type' => 'text/plain',
},
entry => $entry,
- url => $c->uri_for('/user/firstlogin') . "/?username=$uid&key=$newpass",
+ url => $c->uri_for('/user/firstlogin') . "?username=$uid&key=$newpass",
);
$c->forward( $c->view('Email::Template') );
$c->languages(@oldlang);
@@ -565,39 +565,84 @@ sub password : Local {
sub group : Local {
my ( $self, $c ) = @_;
$c->detach('/user/login') if not $c->user;
- $c->assert_user_roles('Account Admins');
- $c->stash( subpages => gensubpages('account') );
+ my $mainrole;
+ if ( $c->check_user_roles('Account Admins') ) {
+ $mainrole = 'account';
+ }
+ elsif ( $c->check_user_roles('Group Admins') ) {
+ $mainrole = 'group';
+ }
+ else {
+ $c->res->forward('/user');
+ }
+ #$c->assert_any_user_role({['Account Admins','Group Admins']});
+ #$mainrole = 'account' if $c->check_user_roles('Account Admins');
+ $c->stash( subpages => gensubpages($mainrole) );
my @errors;
- return if not $c->req->param('attribute') and not $c->req->param('value');
- my $attribute = $c->req->param('attribute');
- $attribute =~ s/[^\w\d]//g;
- my $value = $c->req->param('value');
- $value =~ s/[^\w\d\* ]//g;
+ my ($attribute,$value);
+ if ( not $c->req->param('attribute') and not $c->req->param('value') ) {
+ $attribute = 'owner';
+ $value = $c->user->ldap_entry->dn;
+ $c->stash( heading => 'Groups you manage');
+ }
+ else {
+ $attribute = $c->req->param('attribute');
+ $attribute =~ s/[^\w\d]//g;
+ $value = $c->req->param('value');
+ $value =~ s/[^\w\d\* ]//g;
+ $c->stash( heading => 'Groups matching search criteria');
+ }
my $mesg =
$c->model('user')
- ->search("(&(objectclass=posixGroup)($attribute=$value))");
+ ->search("(&(objectclass=groupOfNames)($attribute=$value))");
push @errors, $mesg->error if $mesg->code;
- my @entries = $mesg->entries;
+ my @entries = $mesg->entries if ($mesg->entries ge 1);
push @errors, $mesg->error if $mesg->code;
- $c->stash(
- entries => \@entries,
- errors => \@errors,
- );
+ $c->stash( entries => \@entries ) if (@entries);
+ $c->stash( errors => \@errors);
}
sub group_modify : Local {
- my ( $self, $c, $group ) = @_;
+ my ( $self, $c, $group, $op, $attr, $value ) = @_;
$c->detach('/user/login') if not $c->user;
- $c->assert_user_roles('Account Admins');
- $c->stash( subpages => gensubpages('account') );
+ my $mainrole = 'account';
+ if ( ! $c->check_user_roles('Account Admins') and ! $c->check_user_roles('Group Admins')) {
+ $c->res->forward('/user');
+ }
+ $mainrole = 'group' if (not $c->check_user_roles('Account Admins'));
+ $c->stash( subpages => gensubpages($mainrole) );
my @errors;
+ my @entries;
+ my $mesg;
$c->detach('/admin/group') if $group eq '';
if ( $group !~ /^[\w\d ]*$/ ) {
push @errors, "Group contains illegal characters";
$c->detach('/admin/group');
}
- my $mesg =
- $c->model('user')->search("(&(objectClass=posixGroup)(cn=$group))");
+ if (defined $op and $op eq 'delete') {
+ $mesg = $c->model('user')->search("(&(objectClass=groupOfNames)(cn=$group))");
+ @entries = $mesg->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)");
+ if ( $mesg->code ) {
+ $c->stash({ errors => $mesg->error});
+ $c->detach('/admin/group');
+ }
+ if ( $mesg->entries ne 1 ) {
+ $c->detach('/admin/group');
+ }
+ @entries = $mesg->entries;
+ my $dn = $entries[0]->dn;
+ $mesg = $c->model('user')->search("(&(objectClass=groupOfNames)(cn=$group))");
+ @entries = $mesg->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, 'More than one entry matched';
$c->detach('/admin/group');
@@ -641,6 +686,11 @@ sub gensubpages : Private {
{ page => 'group', title => "Groups" },
);
}
+ if ( $type eq 'group' ) {
+ @subpagenames = (
+ { page => 'group', title => "Groups" },
+ );
+ }
return \@subpagenames;
}
diff --git a/lib/CatDap/Controller/register.pm b/lib/CatDap/Controller/register.pm
index d52971e..2038e2b 100644
--- a/lib/CatDap/Controller/register.pm
+++ b/lib/CatDap/Controller/register.pm
@@ -25,6 +25,8 @@ Catalyst Controller.
sub index :Path :Args(0) : Form {
my ( $self, $c ) = @_;
+ my $langs = join ',',@{$c->languages};
+ $c->log->debug("Languages: $langs, default: " . $c->language . ", saving: " . ${$c->languages}[0]);
#my $form = Catalyst::Controller::HTML::FormFu->form();
#$c->response->body('Matched CatDap::Controller::register in register.');