View | Details | Raw Unified | Return to bug 21082
Collapse All | Expand All

(-)a/Koha/ExternalContent/OverDrive.pm (-2 / +26 lines)
Lines 121-127 sub auth_url { Link Here
121
121
122
=head2 auth_by_code($code, $base_url)
122
=head2 auth_by_code($code, $base_url)
123
123
124
  To be called in external/overdrive/auth.pl upon return from OverDrive auth
124
  To be called in external/overdrive/auth.pl upon return from OverDrive Granted auth
125
125
126
=cut
126
=cut
127
127
Lines 141-146 sub auth_by_code { Link Here
141
    return $self->get_return_page_from_koha_session;
141
    return $self->get_return_page_from_koha_session;
142
}
142
}
143
143
144
=head2 auth_by_userid($userid, $password, $website_id, $authorization_name)
145
146
  To be called to check auth of patron using OverDrive Patron Authentication method
147
  This requires a SIP connection configured with OverDrive
148
149
=cut
150
151
sub auth_by_userid {
152
    my $self = shift;
153
    my $userid = shift or croak "No user provided";
154
    my $password = shift;
155
    croak "No password provided" unless ($password || !C4::Context->preference("OverDrivePasswordRequired"));
156
    my $website_id = shift or croak "OverDrive Library ID not provided";
157
    my $authorization_name = shift or croak "OverDrive Authname not provided";
158
159
    my ($access_token, $access_token_type, $auth_token)
160
      = $self->client->auth_by_user_id($userid, $password, $website_id, $authorization_name);
161
    $access_token or die "Invalid OverDrive code returned";
162
    $self->set_token_in_koha_session($access_token, $access_token_type);
163
164
    $self->koha_patron->set({overdrive_auth_token => $auth_token})->store;
165
    return $self->get_return_page_from_koha_session;
166
}
167
144
use constant AUTH_RETURN_HANDLER => "/cgi-bin/koha/external/overdrive/auth.pl";
168
use constant AUTH_RETURN_HANDLER => "/cgi-bin/koha/external/overdrive/auth.pl";
145
sub _return_url {
169
sub _return_url {
146
    my $self = shift;
170
    my $self = shift;
Lines 208-214 sub auth_by_saved_token { Link Here
208
232
209
    if (my $auth_token = $koha_patron->overdrive_auth_token) {
233
    if (my $auth_token = $koha_patron->overdrive_auth_token) {
210
        my ($access_token, $access_token_type, $new_auth_token)
234
        my ($access_token, $access_token_type, $new_auth_token)
211
          = $self->client->auth_by_token($auth_token);
235
          = $self->client->make_access_token_request();
212
        $self->set_token_in_koha_session($access_token, $access_token_type);
236
        $self->set_token_in_koha_session($access_token, $access_token_type);
213
        $koha_patron->set({overdrive_auth_token => $new_auth_token})->store;
237
        $koha_patron->set({overdrive_auth_token => $new_auth_token})->store;
214
        return $access_token;
238
        return $access_token;
(-)a/admin/overdrive.pl (-1 lines)
Lines 30-36 my $input = CGI->new; Link Here
30
my @branchcodes   = $input->multi_param('branchcode');
30
my @branchcodes   = $input->multi_param('branchcode');
31
my @authnames     = $input->multi_param('authname');
31
my @authnames     = $input->multi_param('authname');
32
my $op            = $input->param('op');
32
my $op            = $input->param('op');
33
my @messages;
34
33
35
our ( $template, $loggedinuser, $cookie ) = get_template_and_user(
34
our ( $template, $loggedinuser, $cookie ) = get_template_and_user(
36
    {   template_name   => 'admin/overdrive.tt',
35
    {   template_name   => 'admin/overdrive.tt',
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-overdrive-search.tt (-1 / +2 lines)
Lines 64-69 Link Here
64
[% Asset.js("js/overdrive.js") | $raw %]
64
[% Asset.js("js/overdrive.js") | $raw %]
65
[% Asset.js("lib/jquery/plugins/jquery.rating.js") | $raw %]
65
[% Asset.js("lib/jquery/plugins/jquery.rating.js") | $raw %]
66
<script>
66
<script>
67
var OD_password_required = [% IF Koha.Preference('OverDrivePasswordRequired') %]1[% ELSE %]0[% END %];
67
var querystring = "[% q |replace( "'", "\'" ) |replace( '\n', '\\n' ) |replace( '\r', '\\r' ) | html %]";
68
var querystring = "[% q |replace( "'", "\'" ) |replace( '\n', '\\n' ) |replace( '\r', '\\r' ) | html %]";
68
var results_per_page = [% OPACnumSearchResults | html %];
69
var results_per_page = [% OPACnumSearchResults | html %];
69
70
Lines 188-194 $( document ).ready( function() { Link Here
188
    [% IF ( overdrive_error ) %]
189
    [% IF ( overdrive_error ) %]
189
    KOHA.OverDriveCirculation.display_error("#breadcrumbs", "[% overdrive_error.dquote | html %]");
190
    KOHA.OverDriveCirculation.display_error("#breadcrumbs", "[% overdrive_error.dquote | html %]");
190
    [% END %]
191
    [% END %]
191
    [% IF ( loggedinusername and OverDriveCirculation ) %]
192
    [% IF ( loggedinusername and Koha.Preference('OverDriveCirculation') ) %]
192
    KOHA.OverDriveCirculation.with_account_details("#breadcrumbs", function() {
193
    KOHA.OverDriveCirculation.with_account_details("#breadcrumbs", function() {
193
        search( 0 );
194
        search( 0 );
194
    });
195
    });
(-)a/koha-tmpl/opac-tmpl/bootstrap/en/modules/opac-user.tt (+1 lines)
Lines 1058-1063 Link Here
1058
    [% IF Koha.Preference('OverDriveCirculation') %]
1058
    [% IF Koha.Preference('OverDriveCirculation') %]
1059
    [% Asset.js("js/overdrive.js") | $raw %]
1059
    [% Asset.js("js/overdrive.js") | $raw %]
1060
    <script>
1060
    <script>
1061
    var OD_password_required = [% IF Koha.Preference('OverDrivePasswordRequired') %]1[% ELSE %]0[% END %];
1061
    $(document).ready(function() {
1062
    $(document).ready(function() {
1062
        [% IF ( overdrive_error ) %]
1063
        [% IF ( overdrive_error ) %]
1063
            KOHA.OverDriveCirculation.display_error("#opac-user-overdrive", "[% overdrive_error.dquote | html %]");
1064
            KOHA.OverDriveCirculation.display_error("#opac-user-overdrive", "[% overdrive_error.dquote | html %]");
(-)a/koha-tmpl/opac-tmpl/bootstrap/js/overdrive.js (-5 / +11 lines)
Lines 71-77 KOHA.OverDriveCirculation = new function() { Link Here
71
    var login_link = $('<a href="#">')
71
    var login_link = $('<a href="#">')
72
        .click(function(e) {
72
        .click(function(e) {
73
            e.preventDefault();
73
            e.preventDefault();
74
            login(window.open());
74
            var passwd = OD_password_required ? prompt("Please enter your password") : "";
75
            login(passwd);
75
        })
76
        })
76
        .text(_("Login to OverDrive account"));
77
        .text(_("Login to OverDrive account"));
77
    var login_div = $('<div class="overdrive-login">').append(login_link);
78
    var login_div = $('<div class="overdrive-login">').append(login_link);
Lines 193-203 KOHA.OverDriveCirculation = new function() { Link Here
193
        });
194
        });
194
    }
195
    }
195
196
196
    function login(w) {
197
    function login(p) {
197
        svc_ajax('get', { action: "login" }, function(data) {
198
        svc_ajax('get', { action: "login", password: p }, function(data) {
198
            details = null;
199
            details = null;
199
            if (data.login_url) {
200
            if( data.login_success ){
200
                w.location = data.login_url;
201
                $(login_div).detach();
202
                if( $("#overdrive-results-page").length > 0 ){
203
                    location.reload();
204
                } else {
205
                KOHA.OverDriveCirculation.display_account_details( $("#opac-user-overdrive") );
206
                }
201
            }
207
            }
202
        });
208
        });
203
    }
209
    }
(-)a/opac/svc/overdrive (-2 / +9 lines)
Lines 24-29 use JSON qw(encode_json); Link Here
24
use C4::Auth qw(checkauth);
24
use C4::Auth qw(checkauth);
25
use C4::Output;
25
use C4::Output;
26
use Koha::Logger;
26
use Koha::Logger;
27
use Koha::Patrons;
28
use Koha::Library::OverDriveInfos;
27
use Koha::ExternalContent::OverDrive;
29
use Koha::ExternalContent::OverDrive;
28
30
29
my $logger = Koha::Logger->get({ interface => 'opac' });
31
my $logger = Koha::Logger->get({ interface => 'opac' });
Lines 43-49 local $@; Link Here
43
eval {
45
eval {
44
        {
46
        {
45
            $action eq 'login' && do {
47
            $action eq 'login' && do {
46
                $data{login_url} = $od->auth_url($page_url);
48
                my $password = $cgi->param("password") // q{} ;
49
                my $patron = Koha::Patrons->find({ userid => $user });
50
                my $branch_info = Koha::Library::OverDriveInfos->find( $patron->branchcode ) if $patron;
51
                my $branch_authname = $branch_info->authname if $branch_info;
52
                my $authname = $branch_authname || C4::Context->preference('OverDriveAuthname');
53
                $od->auth_by_userid($user, $password,C4::Context->preference('OverDriveWebsiteID'),$authname);
54
                $data{login_success} = 1;
47
                last;
55
                last;
48
            };
56
            };
49
57
50
- 

Return to bug 21082