Revert "remove the unfinished id_as_barcode functionality"
authorThomas Berezansky <tsbere@mvlc.org>
Thu, 4 Aug 2011 19:25:08 +0000 (15:25 -0400)
committerThomas Berezansky <tsbere@mvlc.org>
Thu, 4 Aug 2011 19:25:08 +0000 (15:25 -0400)
This reverts commit 5fa01d69f7374c0c8710db4a951edb80ed5ae733.

Bit too soon, actually. Staff client still uses the function to
verify credentials.

Maybe I skipped this the first time on purpose.

Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Open-ILS/examples/opensrf.xml.example
Open-ILS/src/perlmods/lib/OpenILS/Application/Actor.pm

index b1d6b49..0b16511 100644 (file)
@@ -575,6 +575,11 @@ vim:et:ts=4:sw=4:
                     <min_spare_children>1</min_spare_children>
                     <max_spare_children>5</max_spare_children>
                 </unix_config>
+                <!-- set this to 'true' to have barcode search also search patron records by unique ID -->
+                <app_settings>
+                    <id_as_barcode>false</id_as_barcode>
+                </app_settings>
+
             </open-ils.actor>
 
             <open-ils.booking>
index 0e9e1e3..1f0fa93 100644 (file)
@@ -3117,6 +3117,55 @@ sub verify_user_password {
 }
 
 __PACKAGE__->register_method (
+       method          => 'retrieve_usr_id_via_barcode_or_usrname',
+       api_name        => "open-ils.actor.user.retrieve_id_by_barcode_or_username",
+       signature       => q/
+        Given a barcode or username returns the id for the user or
+        a failure event.
+       /
+);
+
+sub retrieve_usr_id_via_barcode_or_usrname {
+    my($self, $conn, $auth, $barcode, $username) = @_;
+    my $e = new_editor(authtoken => $auth);
+       return $e->die_event unless $e->checkauth;
+    my $id_as_barcode= OpenSRF::Utils::SettingsClient->new->config_value(apps => 'open-ils.actor' => app_settings => 'id_as_barcode');
+    my $user;
+    my $user_by_barcode;
+    my $user_by_username;
+    $logger->info("$id_as_barcode is the ID as BARCODE");
+    if($barcode) {
+        my $card = $e->search_actor_card([
+            {barcode => $barcode},
+            {flesh => 1, flesh_fields => {ac => ['usr']}}])->[0];
+        if ($id_as_barcode =~ /^t/i) {
+            if (!$card) {
+                $user = $e->retrieve_actor_user($barcode);
+                return OpenILS::Event->new( 'ACTOR_USER_NOT_FOUND' ) if(!$user);
+            }else {
+                $user_by_barcode = $card->usr;
+                $user = $user_by_barcode;
+            }
+        }else {
+            return OpenILS::Event->new( 'ACTOR_USER_NOT_FOUND' ) if(!$card);
+            $user_by_barcode = $card->usr;
+            $user = $user_by_barcode;
+        }
+    }
+
+    if ($username) {
+        $user_by_username = $e->search_actor_user({usrname => $username})->[0] or return OpenILS::Event->new( 'ACTOR_USR_NOT_FOUND' );
+
+        $user = $user_by_username;
+    }
+       return OpenILS::Event->new( 'ACTOR_USER_NOT_FOUND' ) if (!$user);
+       return OpenILS::Event->new( 'ACTOR_USER_NOT_FOUND' ) if ($user_by_username && $user_by_barcode && $user_by_username->id != $user_by_barcode->id); 
+    return $e->event unless $e->allowed('VIEW_USER', $user->home_ou);
+    return $user->id;
+}
+
+
+__PACKAGE__->register_method (
        method          => 'merge_users',
        api_name        => 'open-ils.actor.user.merge',
        signature       => {