Lines 53-62
It's based on Auth::GoogleAuth
Link Here
|
53 |
=cut |
53 |
=cut |
54 |
|
54 |
|
55 |
sub new { |
55 |
sub new { |
56 |
my ($class, $params) = @_; |
56 |
my ( $class, $params ) = @_; |
57 |
my $patron = $params->{patron}; |
57 |
my $patron = $params->{patron}; |
58 |
my $secret32 = $params->{secret32}; |
58 |
my $secret32 = $params->{secret32}; |
59 |
my $secret = $params->{secret}; |
59 |
my $secret = $params->{secret}; |
60 |
|
60 |
|
61 |
# FIXME Raise an exception if the syspref is disabled |
61 |
# FIXME Raise an exception if the syspref is disabled |
62 |
|
62 |
|
Lines 64-89
sub new {
Link Here
|
64 |
unless $patron && ref($patron) eq 'Koha::Patron'; |
64 |
unless $patron && ref($patron) eq 'Koha::Patron'; |
65 |
|
65 |
|
66 |
my $type = 'secret32'; |
66 |
my $type = 'secret32'; |
67 |
if( $secret32 ) { |
67 |
if ($secret32) { |
68 |
Koha::Exceptions::BadParameter->throw("Secret32 should be base32") |
68 |
Koha::Exceptions::BadParameter->throw("Secret32 should be base32") |
69 |
if $secret32 =~ /[^a-z2-7]/; |
69 |
if $secret32 =~ /[^a-z2-7]/; |
70 |
} elsif( $secret ) { |
70 |
} elsif ($secret) { |
71 |
$type = 'secret'; |
71 |
$type = 'secret'; |
72 |
} elsif( $patron->secret ) { |
72 |
} elsif ( $patron->secret ) { |
73 |
$secret32 = $patron->decoded_secret; # saved already in base32 |
73 |
$secret32 = $patron->decoded_secret; # saved already in base32 |
74 |
} else { |
74 |
} else { |
75 |
Koha::Exceptions::MissingParameter->throw("No secret passed or patron has no secret"); |
75 |
Koha::Exceptions::MissingParameter->throw("No secret passed or patron has no secret"); |
76 |
} |
76 |
} |
77 |
|
77 |
|
78 |
my $issuer = Encode::encode_utf8($patron->library->branchname); |
78 |
my $issuer = Encode::encode_utf8( $patron->library->branchname ); |
79 |
my $key_id = sprintf "%s_%s", |
79 |
my $key_id = sprintf "%s_%s", |
80 |
$issuer, ( $patron->email || $patron->userid ); |
80 |
$issuer, ( $patron->email || $patron->userid ); |
81 |
|
81 |
|
82 |
return $class->SUPER::new({ |
82 |
return $class->SUPER::new( |
83 |
$type => $secret32 || $secret, |
83 |
{ |
84 |
issuer => $issuer, |
84 |
$type => $secret32 || $secret, |
85 |
key_id => $key_id, |
85 |
issuer => $issuer, |
86 |
}); |
86 |
key_id => $key_id, |
|
|
87 |
} |
88 |
); |
87 |
} |
89 |
} |
88 |
|
90 |
|
89 |
=head3 qr_code |
91 |
=head3 qr_code |
Lines 97-109
sub new {
Link Here
|
97 |
=cut |
99 |
=cut |
98 |
|
100 |
|
99 |
sub qr_code { |
101 |
sub qr_code { |
100 |
my ( $self ) = @_; |
102 |
my ($self) = @_; |
|
|
103 |
|
104 |
my $otpauth = $self->SUPER::qr_code( undef, undef, undef, 1 ); |
101 |
|
105 |
|
102 |
my $otpauth = $self->SUPER::qr_code( undef, undef, undef, 1); |
106 |
# no need to pass secret, key and issuer again |
103 |
# no need to pass secret, key and issuer again |
|
|
104 |
my $qrcode = GD::Barcode->new( 'QRcode', $otpauth, { Ecc => 'M', Version => 10, ModuleSize => 4 } ); |
107 |
my $qrcode = GD::Barcode->new( 'QRcode', $otpauth, { Ecc => 'M', Version => 10, ModuleSize => 4 } ); |
105 |
my $data = $qrcode->plot->png; |
108 |
my $data = $qrcode->plot->png; |
106 |
return "data:image/png;base64,". encode_base64( $data, q{} ); # does not contain newlines |
109 |
return "data:image/png;base64," . encode_base64( $data, q{} ); # does not contain newlines |
107 |
} |
110 |
} |
108 |
|
111 |
|
109 |
1; |
112 |
1; |
110 |
- |
|
|