1
0
Fork 0
mirror of synced 2024-06-13 16:24:47 +12:00

Merge pull request #7984 from appwrite/fix-mfa-admin-mode-condition

fix: mfa with admin mode
This commit is contained in:
Steven Nguyen 2024-04-23 15:21:02 -07:00 committed by GitHub
commit 3a2e9b6f4a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -280,18 +280,16 @@ App::init()
throw new Exception(Exception::USER_PASSWORD_RESET_REQUIRED); throw new Exception(Exception::USER_PASSWORD_RESET_REQUIRED);
} }
if ($mode !== APP_MODE_ADMIN) { $mfaEnabled = $user->getAttribute('mfa', false);
$mfaEnabled = $user->getAttribute('mfa', false); $hasVerifiedEmail = $user->getAttribute('emailVerification', false);
$hasVerifiedEmail = $user->getAttribute('emailVerification', false); $hasVerifiedPhone = $user->getAttribute('phoneVerification', false);
$hasVerifiedPhone = $user->getAttribute('phoneVerification', false); $hasVerifiedAuthenticator = TOTP::getAuthenticatorFromUser($user)?->getAttribute('verified') ?? false;
$hasVerifiedAuthenticator = TOTP::getAuthenticatorFromUser($user)?->getAttribute('verified') ?? false; $hasMoreFactors = $hasVerifiedEmail || $hasVerifiedPhone || $hasVerifiedAuthenticator;
$hasMoreFactors = $hasVerifiedEmail || $hasVerifiedPhone || $hasVerifiedAuthenticator; $minimumFactors = ($mfaEnabled && $hasMoreFactors) ? 2 : 1;
$minimumFactors = ($mfaEnabled && $hasMoreFactors) ? 2 : 1;
if (!in_array('mfa', $route->getGroups())) { if (!in_array('mfa', $route->getGroups())) {
if ($session && \count($session->getAttribute('factors')) < $minimumFactors) { if ($session && \count($session->getAttribute('factors')) < $minimumFactors) {
throw new Exception(Exception::USER_MORE_FACTORS_REQUIRED); throw new Exception(Exception::USER_MORE_FACTORS_REQUIRED);
}
} }
} }
}); });