Skip to content

Commit 684f2f0

Browse files
committed
Invert the mfa verification logic (wolfsage++)
1 parent d53a7e4 commit 684f2f0

File tree

1 file changed

+9
-6
lines changed
  • lib/pause_2017/PAUSE/Web/Controller/User

1 file changed

+9
-6
lines changed

lib/pause_2017/PAUSE/Web/Controller/User/Mfa.pm

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,19 @@ sub edit {
2626
if (uc $req->method eq 'POST' and $req->param("pause99_mfa_sub")) {
2727
my $code = $req->param("pause99_mfa_code");
2828
$req->param("pause99_mfa_code", undef);
29-
if ($code =~ /\A[0-9]{6}\z/ && !$auth->verify($code)) {
30-
$pause->{error}{invalid_code} = 1;
31-
return;
29+
my $verified;
30+
if ($code =~ /\A[0-9]{6}\z/ && $auth->verify($code)) {
31+
$verified = 1;
3232
} elsif ($code =~ /\A[a-z0-9]{5}\-[a-z0-9]{5}\z/ && $u->{mfa_recovery_codes} && $req->param("pause99_mfa_reset")) {
3333
my @recovery_codes = split / /, $u->{mfa_recovery_codes} // '';
34-
if (!grep { PAUSE::Crypt::password_verify($code, $_) } @recovery_codes) {
35-
$pause->{error}{invalid_code} = 1;
36-
return;
34+
if (grep { PAUSE::Crypt::password_verify($code, $_) } @recovery_codes) {
35+
$verified = 1;
3736
}
3837
}
38+
unless ($verified) {
39+
$pause->{error}{invalid_code} = 1;
40+
return;
41+
}
3942
my ($mfa, $secret32, $recovery_codes);
4043
if ($req->param("pause99_mfa_reset")) {
4144
$mfa = 0;

0 commit comments

Comments
 (0)