identity: fix 2fa recovery codes not working

This commit is contained in:
Abdullah Atta committed 2025-07-15 13:35:07 +05:00
1 parent 34fa43f302
commit 76af2cbfc8
2 files changed
+4 -3

No files matched your search

@@ -125,7 +125,8 @@ namespace Streetwriters.Identity.Services
{ {
var primaryMethod = GetPrimaryMethod(user); var primaryMethod = GetPrimaryMethod(user);
var secondaryMethod = GetSecondaryMethod(user); var secondaryMethod = GetSecondaryMethod(user);
return IsValidMFAMethod(method) && (method == primaryMethod || method == secondaryMethod); if (!IsValidMFAMethod(method)) return false;
return method == primaryMethod || (!string.IsNullOrEmpty(secondaryMethod) && method == secondaryMethod);
} }
private Task RemoveSecondaryMethodAsync(User user) private Task RemoveSecondaryMethodAsync(User user)
@@ -164,7 +165,7 @@ namespace Streetwriters.Identity.Services
public async Task SendOTPAsync(User user, IClient client, MultiFactorSetupForm form, bool isSetup = false) public async Task SendOTPAsync(User user, IClient client, MultiFactorSetupForm form, bool isSetup = false)
{ {
var method = form.Type; var method = form.Type;
if ((method != MFAMethods.Email && method != MFAMethods.SMS) || !IsValidMFAMethod(method, user)) if ((method != MFAMethods.Email && method != MFAMethods.SMS) || !IsValidMFAMethod(method))
throw new Exception("Invalid method."); throw new Exception("Invalid method.");
if (isSetup && if (isSetup &&
@@ -101,7 +101,7 @@ namespace Streetwriters.Identity.Validation
context.Result.ErrorDescription = "Please provide a valid multi-factor authentication code."; context.Result.ErrorDescription = "Please provide a valid multi-factor authentication code.";
if (string.IsNullOrEmpty(mfaCode)) return; if (string.IsNullOrEmpty(mfaCode)) return;
if (string.IsNullOrEmpty(mfaMethod) || !MFAService.IsValidMFAMethod(mfaMethod, user)) if (string.IsNullOrEmpty(mfaMethod) || (!MFAService.IsValidMFAMethod(mfaMethod, user) && mfaMethod != MFAMethods.RecoveryCode))
{ {
context.Result.ErrorDescription = "Please provide a valid multi-factor authentication method."; context.Result.ErrorDescription = "Please provide a valid multi-factor authentication method.";
return; return;