diff options
author | Buchan Milne <buchan@mageia.org> | 2011-02-16 13:33:29 +0000 |
---|---|---|
committer | Buchan Milne <buchan@mageia.org> | 2011-02-16 13:33:29 +0000 |
commit | c38c0dea5c102f2d1b476cd8060a196cde47ed2e (patch) | |
tree | 688441a4f6a350de3ce20a23f23854ce6990f226 | |
parent | aafc5635ed63bc873495f0dd03cf4a0d9d046527 (diff) | |
download | identity-c38c0dea5c102f2d1b476cd8060a196cde47ed2e.tar identity-c38c0dea5c102f2d1b476cd8060a196cde47ed2e.tar.gz identity-c38c0dea5c102f2d1b476cd8060a196cde47ed2e.tar.bz2 identity-c38c0dea5c102f2d1b476cd8060a196cde47ed2e.tar.xz identity-c38c0dea5c102f2d1b476cd8060a196cde47ed2e.zip |
Add error pages for user self-editing buttons, and correctly collect ldap errors Respect Controller::User::editable_attrs in user editing page Add preferredLanguage to editable_attrs
-rw-r--r-- | catdap.yml | 1 | ||||
-rw-r--r-- | lib/CatDap/Controller/user.pm | 18 | ||||
-rw-r--r-- | root/user/add.tt | 4 | ||||
-rw-r--r-- | root/user/delete.tt | 4 |
4 files changed, 20 insertions, 7 deletions
@@ -87,6 +87,7 @@ Controller::User: - secretary - mailForwardingAddress - sshPublicKey + - preferredLanguage # Currently not used, we only respect editable_attrs uneditable_attrs: diff --git a/lib/CatDap/Controller/user.pm b/lib/CatDap/Controller/user.pm index 2d0ba04..f2171eb 100644 --- a/lib/CatDap/Controller/user.pm +++ b/lib/CatDap/Controller/user.pm @@ -223,6 +223,7 @@ sub index :Path :Args(0) { grep /$attrname/,@attributes or grep /$attrname/,@{${$c->config}{'Controller::User'}{'uneditable_attrs'}} or grep /$attrname/,@{${$c->config}{'Controller::User'}{'skip_attrs'}} or + grep /$attrname/,@{${$c->config}{'Controller::User'}{'editable_attrs'}} and push @may, $attrname; } } @@ -247,7 +248,7 @@ sub add : Local { my $entry = $mesg->entry; $entry->add( $attr => $value); $c->log->info("Adding $attr = $value to user $user"); - $entry->update; + $mesg = $entry->update; push @{${$c->stash}{'errors'}},$mesg->error if $mesg->code; $c->log->info($mesg->error); $c->res->redirect('/user'); @@ -258,16 +259,19 @@ sub delete : Local : Args(2) { my ($mesg,$entry,$user,$userfilter); $user = $c->user->username; $userfilter = $c->user->store->user_filter; - $userfilter =~ s/%s/$c->user->username/g; - $c->log->debug("Searching for user $user"); + $userfilter =~ s/%s/$user/g; + $c->log->debug("Searching for user $user with filter $userfilter"); $mesg = $c->model('User')->search($userfilter); + push @{${$c->stash}{'errors'}},$mesg->error if $mesg->code; + $c->log->info($mesg->error) if $mesg->code; $entry = $mesg->entry; - $c->log->info("Deleting $attrname = $attrvalue from user $user"); + $c->log->info("Deleting $attrname: $attrvalue from dn " . $entry->dn); $entry->delete($attrname => $attrvalue); - $entry->update; + $mesg = $entry->update; push @{${$c->stash}{'errors'}},$mesg->error if $mesg->code; - $c->log->info($mesg->error); - $c->res->redirect('/user'); + $c->log->info("Result of update: " . $mesg->error . "," . $mesg->code) if $mesg->code; + $c->res->redirect('/user') unless $mesg->code; + $c->stash({ attrname => $attrname, attrvalue => $attrvalue}); } sub password : Local { diff --git a/root/user/add.tt b/root/user/add.tt new file mode 100644 index 0000000..eaf84aa --- /dev/null +++ b/root/user/add.tt @@ -0,0 +1,4 @@ +An error occured adding the attribute [% attrname %] +[% IF attrvalue %]with value [% attrvalue %][% END %]. + +Please go back and try again diff --git a/root/user/delete.tt b/root/user/delete.tt new file mode 100644 index 0000000..a0adffd --- /dev/null +++ b/root/user/delete.tt @@ -0,0 +1,4 @@ +An error occured deleting the attribute [% attrname %] +[% IF attrvalue %]with value [% attrvalue %][% END %]. + +Please go back and try again |