diff --git a/C4/Auth.pm b/C4/Auth.pm index b83711109d..1655be2d15 100644 --- a/C4/Auth.pm +++ b/C4/Auth.pm @@ -883,7 +883,7 @@ sub checkauth { { my $patron = Koha::Patrons->find( { userid => $userid } ); my $auth = Koha::Auth::TwoFactorAuth->new( { patron => $patron } ); - my $verified = $auth->verify($otp_token, 1); + my $verified = $auth->verify($otp_token); $auth->clear; if ( $verified ) { # The token is correct, the user is fully logged in! diff --git a/Koha/Auth/TwoFactorAuth.pm b/Koha/Auth/TwoFactorAuth.pm index 6113493b67..5a00d4af10 100644 --- a/Koha/Auth/TwoFactorAuth.pm +++ b/Koha/Auth/TwoFactorAuth.pm @@ -19,6 +19,7 @@ use Modern::Perl; use GD::Barcode; use MIME::Base64 qw( encode_base64 ); +use C4::Context; use C4::Letters; use Koha::Exceptions; use Koha::Exceptions::Patron; @@ -106,4 +107,24 @@ sub qr_code { return "data:image/png;base64,". encode_base64( $data, q{} ); # does not contain newlines } +=head3 verify + + my $verified = $auth->verify($otp_token); + + Replacement for Auth::GoogleAuth::verify. + This uses a system wide default for range. + +=cut + +sub verify { + my ( $self, $code, $range, $secret32, $timestamp, $interval ) = @_; + if ( !defined $range ) { + my $mfa_range = C4::Context->config('mfa_range') ? int( C4::Context->config('mfa_range') ) : 1; + if ($mfa_range) { + $range = $mfa_range; + } + } + return $self->SUPER::verify( $code, $range, $secret32, $timestamp, $interval ); +} + 1; diff --git a/Koha/REST/V1/TwoFactorAuth.pm b/Koha/REST/V1/TwoFactorAuth.pm index 29679a544c..8cc8606acb 100644 --- a/Koha/REST/V1/TwoFactorAuth.pm +++ b/Koha/REST/V1/TwoFactorAuth.pm @@ -139,7 +139,7 @@ sub verification { my $verified = $auth->verify( $pin_code, - 1, # range + undef, # range (default to 1 or mfa_range in koha-conf.xml) $secret32, undef, # timestamp (defaults to now) 30, # interval (default 30) diff --git a/debian/templates/koha-conf-site.xml.in b/debian/templates/koha-conf-site.xml.in index 187150fa6a..f6a1662bad 100644 --- a/debian/templates/koha-conf-site.xml.in +++ b/debian/templates/koha-conf-site.xml.in @@ -470,5 +470,7 @@ __END_SRU_PUBLICSERVER__ KohaOpacLanguage --> + 1 + diff --git a/etc/koha-conf.xml b/etc/koha-conf.xml index beb5ccd80c..b361468b4c 100644 --- a/etc/koha-conf.xml +++ b/etc/koha-conf.xml @@ -286,5 +286,7 @@ KohaOpacLanguage --> + 1 +