From 29895b6ea6a37e07d07ef9563353b6920620afdb Mon Sep 17 00:00:00 2001 From: Jeff Godin Date: Wed, 25 Jul 2012 19:34:36 -0400 Subject: [PATCH] Add ability for users to set their alias in TPAC New option under Personal Information to display and allow editing of a user's holdshelf alias. Proof of concept, much potential for further enhancement. Signed-off-by: Jeff Godin --- .../src/perlmods/lib/OpenILS/Application/Actor.pm | 23 ++++++++++++ .../src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm | 1 + .../lib/OpenILS/WWW/EGCatLoader/Account.pm | 41 ++++++++++++++++++++++ Open-ILS/src/templates/opac/myopac/prefs.tt2 | 5 +++ .../src/templates/opac/myopac/update_alias.tt2 | 31 ++++++++++++++++ 5 files changed, 101 insertions(+) create mode 100644 Open-ILS/src/templates/opac/myopac/update_alias.tt2 diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm index 9c9efc490d..61d30f463f 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm @@ -1377,6 +1377,20 @@ __PACKAGE__->register_method( __PACKAGE__->register_method( method => "update_passwd", + api_name => "open-ils.actor.user.alias.update", + signature => { + desc => "Update the operator's alias", + params => [ + { desc => 'Authentication token', type => 'string' }, + { desc => 'New alias', type => 'string' }, + { desc => 'Current password', type => 'string' } + ], + return => {desc => '1 on success, Event on error or incorrect current password'} + } +); + +__PACKAGE__->register_method( + method => "update_passwd", api_name => "open-ils.actor.user.email.update", signature => { desc => "Update the operator's email address", @@ -1424,6 +1438,15 @@ sub update_passwd { } $db_user->usrname($new_val); + } elsif( $api =~ /alias/o ) { + + my $exist = $e->search_actor_user({alias=>$new_val},{idlist=>1}); + if (@$exist) { + $e->rollback; + return new OpenILS::Event('USERNAME_EXISTS'); + } + $db_user->alias($new_val); + } elsif( $api =~ /email/o ) { $db_user->email($new_val); } diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm index 0af9399168..a70c150f57 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm @@ -184,6 +184,7 @@ sub load { return $self->load_myopac_main if $path =~ m|opac/myopac/main|; return $self->load_myopac_receipt_email if $path =~ m|opac/myopac/receipt_email|; return $self->load_myopac_receipt_print if $path =~ m|opac/myopac/receipt_print|; + return $self->load_myopac_update_alias if $path =~ m|opac/myopac/update_alias|; return $self->load_myopac_update_email if $path =~ m|opac/myopac/update_email|; return $self->load_myopac_update_password if $path =~ m|opac/myopac/update_password|; return $self->load_myopac_update_username if $path =~ m|opac/myopac/update_username|; diff --git a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm index 61b1028a84..2d4a22e7f9 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Account.pm @@ -1686,6 +1686,47 @@ sub load_myopac_update_username { return $self->generic_redirect($url); } +sub load_myopac_update_alias { + my $self = shift; + my $e = $self->editor; + my $ctx = $self->ctx; + my $alias = $self->cgi->param('alias') || ''; + my $current_pw = $self->cgi->param('current_pw') || ''; + + $self->prepare_extended_user_info; + + return Apache2::Const::OK + unless $self->cgi->request_method eq 'POST'; + + unless($alias) { + $ctx->{invalid_alias} = $alias; + return Apache2::Const::OK; + } + + if($alias ne $e->requestor->alias) { + + my $evt = $U->simplereq( + 'open-ils.actor', + 'open-ils.actor.user.alias.update', + $e->authtoken, $alias, $current_pw); + + if($U->event_equals($evt, 'INCORRECT_PASSWORD')) { + $ctx->{password_incorrect} = 1; + return Apache2::Const::OK; + } + + if($U->event_equals($evt, 'USERNAME_EXISTS')) { + $ctx->{alias_exists} = $alias; + return Apache2::Const::OK; + } + } + + my $url = $self->apache->unparsed_uri; + $url =~ s/update_alias/prefs/; + + return $self->generic_redirect($url); +} + sub load_myopac_update_password { my $self = shift; my $e = $self->editor; diff --git a/Open-ILS/src/templates/opac/myopac/prefs.tt2 b/Open-ILS/src/templates/opac/myopac/prefs.tt2 index df1d444148..09611a8a25 100644 --- a/Open-ILS/src/templates/opac/myopac/prefs.tt2 +++ b/Open-ILS/src/templates/opac/myopac/prefs.tt2 @@ -108,6 +108,11 @@ [% l('Change') %] [%- END %] + + [% l("Holdshelf Alias") %] + [% ctx.user.alias | html %] + [% l('Change') %] + [% IF ctx.user.ident_value %] diff --git a/Open-ILS/src/templates/opac/myopac/update_alias.tt2 b/Open-ILS/src/templates/opac/myopac/update_alias.tt2 new file mode 100644 index 0000000000..120e872eb7 --- /dev/null +++ b/Open-ILS/src/templates/opac/myopac/update_alias.tt2 @@ -0,0 +1,31 @@ +[% PROCESS "opac/parts/header.tt2"; + PROCESS "opac/parts/misc_util.tt2"; + WRAPPER "opac/parts/myopac/base.tt2"; + myopac_page = "prefs" %] +
+ +[% IF ctx.alias_exists %] +
+ [% bad_alias = ctx.alias_exists | html %] + [% | l(bad_alias) %] + The alias "[_1]" is taken. Please try a different alias. + [% END %] +
+ +[% ELSIF ctx.password_incorrect %] +
+ [% |l %] Your current password was not correct. [% END %] +
+ +[% END %] + +
+ + + + + +
[% l('Current Alias') %][% ctx.user.alias | html %]
[% l('Current Password') %]
[% l('New Alias') %]
+
+ +[% END %] -- 2.11.0