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
+