X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=offline_circ%2Fservice.pl;h=bbae44bb74e8bd4dd62bb57164aceb1034804c6e;hb=8595e80b7858c7eeb7b11a1dd33f338fce12791c;hp=38f46d8013681b4c4682cf8b695210090693f363;hpb=840a907b86c054aa1c216a8cf353b1a9ef3c44fa;p=srvgit diff --git a/offline_circ/service.pl b/offline_circ/service.pl index 38f46d8013..bbae44bb74 100755 --- a/offline_circ/service.pl +++ b/offline_circ/service.pl @@ -4,31 +4,37 @@ # This file is part of Koha. # -# Koha is free software; you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation; either version 2 of the License, or (at your option) any later -# version. +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# Koha is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR -# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# You should have received a copy of the GNU General Public License along -# with Koha; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . # -use strict; -use warnings; +use Modern::Perl; -use CGI; +use CGI qw ( -utf8 ); use C4::Auth; use C4::Circulation; +use Koha::DateUtils; +use DateTime::TimeZone; my $cgi = CGI->new; +# used by the KOCT firefox extension +# (or any third-party that doesn't want to rely on cookies for authentication) +my $nocookie = $cgi->param('nocookie') || 0; + # get the status of the user, this will check his credentials and rights my ($status, $cookie, $sessionId) = C4::Auth::check_api_auth($cgi, undef); +($status, $sessionId) = C4::Auth::check_cookie_auth($cgi, undef) if ($status ne 'ok' && !$nocookie); my $result; @@ -39,12 +45,18 @@ if ($status eq 'ok') { # if authentication is ok my $timestamp = $cgi->param('timestamp') || ''; my $action = $cgi->param('action') || ''; my $barcode = $cgi->param('barcode') || ''; + my $amount = $cgi->param('amount') || 0; $barcode =~ s/^\s+//; $barcode =~ s/\s+$//; my $cardnumber = $cgi->param('cardnumber') || ''; $cardnumber =~ s/^\s+//; $cardnumber =~ s/\s+$//; + # KOCT send UTC timestamp, it should be converted to local timezone + my $dt = dt_from_string($timestamp, 'iso', DateTime::TimeZone->new(name => 'UTC')); + $dt->set_time_zone(C4::Context->tz); + $timestamp = $dt->ymd('-') . ' ' . $dt->hms(':'); + if ( $cgi->param('pending') eq 'true' ) { # if the 'pending' flag is true, we store the operation in the db instead of directly processing them $result = AddOfflineOperation( $userid, @@ -53,6 +65,7 @@ if ($status eq 'ok') { # if authentication is ok $action, $barcode, $cardnumber, + $amount ); } else { $result = ProcessOfflineOperation( @@ -63,12 +76,15 @@ if ($status eq 'ok') { # if authentication is ok 'action' => $action, 'barcode' => $barcode, 'cardnumber' => $cardnumber, + 'amount' => $amount } ); } -} else { - $result = "Authentication failed." + + print CGI::header('-type'=>'text/plain', '-charset'=>'utf-8'); + print $result; + exit; } -print CGI::header('-type'=>'text/plain', '-charset'=>'utf-8'); +print CGI::header('-type'=>'text/plain', '-charset'=>'utf-8', '-status' => '401 Unauthorized'); print $result;