From: jeff Date: Fri, 15 Apr 2011 20:00:37 +0000 (-0700) Subject: API methods (and perms) for deleting a card and flagging a user as deleted X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=51658811b866fd3202ec32ff6793edd1da710ced;p=working%2FEvergreen.git API methods (and perms) for deleting a card and flagging a user as deleted --- diff --git a/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm b/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm index be97787a27..ea31d03be6 100644 --- a/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm +++ b/Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm @@ -3709,6 +3709,52 @@ sub really_delete_user { } + +__PACKAGE__->register_method ( + method => 'flag_user_as_deleted', + api_name => 'open-ils.actor.user.flag_as_deleted', + signature => q/ + Flags a user as deleted. + @param auth Authentication token + @param user_id The user ID + / +); +sub flag_user_as_deleted { + my ($self, $conn, $auth, $user_id) = @_; + my $e = new_editor(xact=>1, authtoken=>$auth); + return $e->die_event unless $e->checkauth; + my $user = $e->retrieve_actor_user($user_id) or return $e->die_event; + return $e->die_event unless $e->allowed('FLAG_USER_AS_DELETED', $user->home_ou); + $user->deleted(1); + $user->active(0); + $e->update_actor_user($user) or return $e->die_event; + $e->commit; + return 1; +} + + +__PACKAGE__->register_method ( + method => 'delete_card', + api_name => 'open-ils.actor.user.delete_card', + signature => q/ + Completely deletes a user's card. + @param auth Authentication token + @param card_id The card ID + / +); +sub delete_card { + my ($self, $conn, $auth, $card_id) = @_; + my $e = new_editor(xact=>1, authtoken=>$auth); + return $e->die_event unless $e->checkauth; + my $card = $e->retrieve_actor_card($card_id) or return $e->die_event; + my $user = $e->retrieve_actor_user($card->usr) or return $e->die_event; + return $e->die_event unless $e->allowed('DELETE_CARD', $user->home_ou); + $e->delete_actor_card($card) or return $e->die_event; + $e->commit; + return 1; +} + + __PACKAGE__->register_method ( method => 'user_payments', api_name => 'open-ils.actor.user.payments.retrieve', diff --git a/Open-ILS/src/sql/Pg/950.data.seed-values.sql b/Open-ILS/src/sql/Pg/950.data.seed-values.sql index ba59c4b816..314c3b0b33 100644 --- a/Open-ILS/src/sql/Pg/950.data.seed-values.sql +++ b/Open-ILS/src/sql/Pg/950.data.seed-values.sql @@ -1613,7 +1613,11 @@ INSERT INTO permission.perm_list ( id, code, description ) VALUES ( 558, 'group_application.user.staff.data_review', oils_i18n_gettext( 558, 'Allow a user to add/remove users to/from the "Data Review" group', 'ppl', 'description' )), ( 559, 'group_application.user.staff.volunteers', oils_i18n_gettext( 559, - 'Allow a user to add/remove users to/from the "Volunteers" group', 'ppl', 'description' )) + 'Allow a user to add/remove users to/from the "Volunteers" group', 'ppl', 'description' )), + ( 560, 'FLAG_USER_AS_DELETED', oils_i18n_gettext( 560, + 'Allows the user to flag a user as deleted', 'ppl', 'description' )), + ( 561, 'DELETE_CARD', oils_i18n_gettext( 561, + 'Allows the user to delete a user''s card (barcode)', 'ppl', 'description' )) ; SELECT SETVAL('permission.perm_list_id_seq'::TEXT, 1000); diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.perm_list_flag_user_as_deleted.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.perm_list_flag_user_as_deleted.sql new file mode 100644 index 0000000000..90f9df7c0f --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.perm_list_flag_user_as_deleted.sql @@ -0,0 +1,12 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); + +INSERT INTO permission.perm_list ( code, description ) VALUES + ( 'FLAG_USER_AS_DELETED', oils_i18n_gettext( '', + 'Allows the user to flag a user as deleted', 'ppl', 'description' )), + ( 'DELETE_CARD', oils_i18n_gettext( '', + 'Allows the user to delete a user''s card (barcode)', 'ppl', 'description' )) +; + +COMMIT;