=head2 auth_by_code($code, $base_url)
- To be called in external/overdrive/auth.pl upon return from OverDrive auth
+ To be called in external/overdrive/auth.pl upon return from OverDrive Granted auth
=cut
return $self->get_return_page_from_koha_session;
}
+=head2 auth_by_userid($userid, $password, $website_id, $authorization_name)
+
+ To be called to check auth of patron using OverDrive Patron Authentication method
+ This requires a SIP connection configured with OverDrive
+
+=cut
+
+sub auth_by_userid {
+ my $self = shift;
+ my $userid = shift or croak "No user provided";
+ my $password = shift;
+ croak "No password provided" unless ($password || !C4::Context->preference("OverDrivePasswordRequired"));
+ my $website_id = shift or croak "OverDrive Library ID not provided";
+ my $authorization_name = shift or croak "OverDrive Authname not provided";
+
+ my ($access_token, $access_token_type, $auth_token)
+ = $self->client->auth_by_user_id($userid, $password, $website_id, $authorization_name);
+ $access_token or die "Invalid OverDrive code returned";
+ $self->set_token_in_koha_session($access_token, $access_token_type);
+
+ $self->koha_patron->set({overdrive_auth_token => $auth_token})->store;
+ return $self->get_return_page_from_koha_session;
+}
+
use constant AUTH_RETURN_HANDLER => "/cgi-bin/koha/external/overdrive/auth.pl";
sub _return_url {
my $self = shift;
if (my $auth_token = $koha_patron->overdrive_auth_token) {
my ($access_token, $access_token_type, $new_auth_token)
- = $self->client->auth_by_token($auth_token);
+ = $self->client->make_access_token_request();
$self->set_token_in_koha_session($access_token, $access_token_type);
$koha_patron->set({overdrive_auth_token => $new_auth_token})->store;
return $access_token;
my @branchcodes = $input->multi_param('branchcode');
my @authnames = $input->multi_param('authname');
my $op = $input->param('op');
-my @messages;
our ( $template, $loggedinuser, $cookie ) = get_template_and_user(
{ template_name => 'admin/overdrive.tt',
[% Asset.js("js/overdrive.js") | $raw %]
[% Asset.js("lib/jquery/plugins/jquery.rating.js") | $raw %]
<script>
+var OD_password_required = [% IF Koha.Preference('OverDrivePasswordRequired') %]1[% ELSE %]0[% END %];
var querystring = "[% q |replace( "'", "\'" ) |replace( '\n', '\\n' ) |replace( '\r', '\\r' ) | html %]";
var results_per_page = [% OPACnumSearchResults | html %];
[% IF ( overdrive_error ) %]
KOHA.OverDriveCirculation.display_error("#breadcrumbs", "[% overdrive_error.dquote | html %]");
[% END %]
- [% IF ( loggedinusername and OverDriveCirculation ) %]
+ [% IF ( loggedinusername and Koha.Preference('OverDriveCirculation') ) %]
KOHA.OverDriveCirculation.with_account_details("#breadcrumbs", function() {
search( 0 );
});
[% IF Koha.Preference('OverDriveCirculation') %]
[% Asset.js("js/overdrive.js") | $raw %]
<script>
+ var OD_password_required = [% IF Koha.Preference('OverDrivePasswordRequired') %]1[% ELSE %]0[% END %];
$(document).ready(function() {
[% IF ( overdrive_error ) %]
KOHA.OverDriveCirculation.display_error("#opac-user-overdrive", "[% overdrive_error.dquote | html %]");
var login_link = $('<a href="#">')
.click(function(e) {
e.preventDefault();
- login(window.open());
+ var passwd = OD_password_required ? prompt("Please enter your password") : "";
+ login(passwd);
})
.text(_("Login to OverDrive account"));
var login_div = $('<div class="overdrive-login">').append(login_link);
});
}
- function login(w) {
- svc_ajax('get', { action: "login" }, function(data) {
+ function login(p) {
+ svc_ajax('get', { action: "login", password: p }, function(data) {
details = null;
- if (data.login_url) {
- w.location = data.login_url;
+ if( data.login_success ){
+ $(login_div).detach();
+ if( $("#overdrive-results-page").length > 0 ){
+ location.reload();
+ } else {
+ KOHA.OverDriveCirculation.display_account_details( $("#opac-user-overdrive") );
+ }
}
});
}
use C4::Auth qw(checkauth);
use C4::Output;
use Koha::Logger;
+use Koha::Patrons;
+use Koha::Library::OverDriveInfos;
use Koha::ExternalContent::OverDrive;
my $logger = Koha::Logger->get({ interface => 'opac' });
eval {
{
$action eq 'login' && do {
- $data{login_url} = $od->auth_url($page_url);
+ my $password = $cgi->param("password") // q{} ;
+ my $patron = Koha::Patrons->find({ userid => $user });
+ my $branch_info = Koha::Library::OverDriveInfos->find( $patron->branchcode ) if $patron;
+ my $branch_authname = $branch_info->authname if $branch_info;
+ my $authname = $branch_authname || C4::Context->preference('OverDriveAuthname');
+ $od->auth_by_userid($user, $password,C4::Context->preference('OverDriveWebsiteID'),$authname);
+ $data{login_success} = 1;
last;
};