1 package NCIP::Handler::LookupUser;
5 NCIP::Handler::LookupUser
9 Not to be called directly, NCIP::Handler will pick the appropriate Handler
10 object, given a message type
21 our @ISA = qw(NCIP::Handler);
28 # Given our xml document, lets find our userid
30 $xmldoc->getElementsByTagNameNS( $self->namespace(),
31 'UserIdentifierValue' );
32 my $xpc = XML::LibXML::XPathContext->new;
33 $xpc->registerNs( 'ns', $self->namespace() );
36 # We may get a password, username combo instead of userid
37 # Need to deal with that also
38 my $root = $xmldoc->documentElement();
40 $xpc->findnodes( '//ns:AuthenticationInput', $root );
43 foreach my $node (@authtypes) {
45 $xpc->findnodes( './ns:AuthenticationInputType', $node );
47 $xpc->findnodes( './ns:AuthenticationInputData', $node );
48 if ( $class->[0]->textContent eq 'Barcode Id' ) {
49 $barcode = $value->[0]->textContent;
51 elsif ( $class->[0]->textContent eq 'PIN' ) {
52 $pin = $value->[0]->textContent;
59 $user_id = $user_id->textContent();
62 # We may get a password, username combo instead of userid
63 # Need to deal with that also
65 my $user = NCIP::User->new( { userid => $user_id, ils => $self->ils } );
69 # this bit should be at a lower level
71 my ($from,$to) = $self->get_agencies($xmldoc);
73 # we switch these for the templates
74 # because we are responding, to becomes from, from becomes to
75 $vars->{'fromagency'} = $to;
76 $vars->{'toagency'} = $from;
78 # if we have blank user, we need to return that
79 # and can skip looking for elementtypes
80 if ( $user->userdata->{'borrowernumber'} eq '' ) {
81 $vars->{'messagetype'} = 'LookupUserResponse';
82 $vars->{'error_detail'} = "Borrower not found";
83 my $output = $self->render_output( 'problem.tt', $vars );
86 my $elements = $self->get_user_elements($xmldoc);
88 #set up the variables for our template
89 $vars->{'messagetype'} = 'LookupUserResponse';
90 $vars->{'elements'} = $elements;
91 $vars->{'user'} = $user;
92 my $output = $self->render_output( 'response.tt', $vars );