RFID: first check if we need reader for user
authorDobrica Pavlinusic <dpavlin@rot13.org>
Wed, 25 Jan 2017 17:25:57 +0000 (18:25 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Mon, 25 Mar 2019 14:43:15 +0000 (15:43 +0100)
ffzg/rfid/register.pl

index 9e0b86f..e49e884 100755 (executable)
@@ -10,7 +10,7 @@ use FindBin;
 my $query = new CGI;
 
 use Data::Dump qw(dump);
-warn "# query ", dump( $query );
+#warn "# query ", dump( $query );
 
 my $hash = {
        remote_host => $query->remote_host,
@@ -20,13 +20,26 @@ my $dir = $FindBin::Bin;
 my $path = "$dir/ip/" . $hash->{remote_host};
 
 
-if ( my $ip = $query->param('local_ip') ) {
+if ( my $koha_login = $query->param('koha_login') ) {
+       my $path = "$dir/user/$koha_login";
+       $hash->{koha_login} = $koha_login;
+       if ( -e $path ) {
+               open(my $fh, '<', $path);
+               $hash->{local_ip} = <$fh>;
+               $hash->{have_reader} = 1;
+               warn "RFID: $koha_login -> $hash->{local_ip}\n";
+               close $fh;
+       } else {
+               #warn "# no $path";
+       }
+
+} elsif ( my $ip = $query->param('local_ip') ) {
 
        $hash->{local_ip} = $ip;
        open(my $fh, '>', $path);
        print $fh $hash->{local_ip};
        close($fh);
-       warn "# $path ", -s $path, "\n";
+       warn "RFID $path $ip ", -s $path, "\n";
 
 } elsif ( -e $path ) {
        open(my $fh, '<', $path);
@@ -35,40 +48,42 @@ if ( my $ip = $query->param('local_ip') ) {
        $hash->{local_ip} = $ip;
        close($fh);
 
-} elsif ( my $koha_login = $query->param('koha_login') ) {
-       my $path = "$dir/user/$koha_login";
-       if ( -e $path ) {
-               open(my $fh, '<', $path);
-               $hash->{local_ip} = <$fh>;
-               close $fh;
-       } else {
-               warn "# no $path";
-       }
-
 } else {
        warn $hash->{_error} = "ERROR: ", $hash->{remote_host}, " don't have RFID reader assigned";
 }
 
+sub js_console {
+       warn "RFID: ",@_;
+       return q|
+//$(document).ready( function() {
+       console.log('|, join('', @_), qq|);
+//}
+|;
+}
+
 if ( $query->param('intranet-js') ) {
        print "Content-type: application/javascript\r\n\r\n";
 
-       if ( my $local_ip = $hash->{local_ip} ) {
-                       chomp $local_ip;
-                       my $url = "/rfid/to/$local_ip";
-                       open(my $js, '<', 'koha-rfid.js');
-                       while(<$js>) {
-                               s/local_ip/$local_ip/g;
-                               s/localhost/$url/g;
-                               s{///$url}{$url}g; # relative urls
-                               print;
-                       }
-                       close($js);
+       if ( exists $hash->{have_reader} ) {
+               if ( my $local_ip = $hash->{local_ip} ) {
+                               chomp $local_ip;
+                               my $url = "/rfid/to/$local_ip";
+                               open(my $js, '<', 'koha-rfid.js');
+                               while(<$js>) {
+                                       s/local_ip/$local_ip/g;
+                                       s/localhost/$url/g;
+                                       s{///$url}{$url}g; # relative urls
+                                       print;
+                               }
+                               close($js);
+               } else {
+                       warn "## RFID no local_ip for ",dump($hash);
+               }
        } else {
-                       print 'console.log("no RFID reader for client "'. $hash->{remote_host}, ");\n";
-
+#              warn "## RFID doesn't have reader ",dump($hash);
        }
 } else {
        print "Content-type: application/json; charset=utf-8\r\n\r\n";
        print encode_json $hash;
-       warn "# hash = ",dump($hash);
+       warn "## RFID hash = ",dump($hash);
 }