mirror of
https://github.com/streetwriters/notesnook-sync-server.git
synced 2026-08-13 12:00:20 +02:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
28d614d80b | ||
|
|
ebb1d44edd |
@@ -79,9 +79,12 @@ namespace Streetwriters.Identity.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpDelete]
|
[HttpDelete]
|
||||||
public IActionResult Disable2FA()
|
public async Task<IActionResult> Disable2FA()
|
||||||
{
|
{
|
||||||
return BadRequest("2FA is mandatory and cannot be disabled.");
|
var user = await UserManager.GetUserAsync(User) ?? throw new Exception("User not found.");
|
||||||
|
if (!await UserManager.GetTwoFactorEnabledAsync(user)) return Ok();
|
||||||
|
await MFAService.DisableMFAAsync(user);
|
||||||
|
return Ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("codes")]
|
[HttpGet("codes")]
|
||||||
|
|||||||
@@ -34,12 +34,6 @@ namespace Streetwriters.Identity.Services
|
|||||||
var claims = await userManager.GetClaimsAsync(user);
|
var claims = await userManager.GetClaimsAsync(user);
|
||||||
var marketingConsentClaim = claims.FirstOrDefault((claim) => claim.Type == $"{clientId}:marketing_consent");
|
var marketingConsentClaim = claims.FirstOrDefault((claim) => claim.Type == $"{clientId}:marketing_consent");
|
||||||
|
|
||||||
if (await userManager.IsEmailConfirmedAsync(user) && !await userManager.GetTwoFactorEnabledAsync(user))
|
|
||||||
{
|
|
||||||
await mfaService.EnableMFAAsync(user, MFAMethods.Email);
|
|
||||||
user = await userManager.FindByIdAsync(userId);
|
|
||||||
ArgumentNullException.ThrowIfNull(user);
|
|
||||||
}
|
|
||||||
ArgumentNullException.ThrowIfNull(user.Email);
|
ArgumentNullException.ThrowIfNull(user.Email);
|
||||||
|
|
||||||
return new UserModel
|
return new UserModel
|
||||||
@@ -163,6 +157,7 @@ namespace Streetwriters.Identity.Services
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
await mfaService.EnableMFAAsync(user, MFAMethods.Email);
|
||||||
if (userAgent != null) await userManager.AddClaimAsync(user, new Claim("platform", PlatformFromUserAgent(userAgent)));
|
if (userAgent != null) await userManager.AddClaimAsync(user, new Claim("platform", PlatformFromUserAgent(userAgent)));
|
||||||
var code = await userManager.GenerateEmailConfirmationTokenAsync(user);
|
var code = await userManager.GenerateEmailConfirmationTokenAsync(user);
|
||||||
var callbackUrl = UrlExtensions.TokenLink(user.Id.ToString(), code, client.Id, TokenType.CONFRIM_EMAIL);
|
var callbackUrl = UrlExtensions.TokenLink(user.Id.ToString(), code, client.Id, TokenType.CONFRIM_EMAIL);
|
||||||
|
|||||||
@@ -59,7 +59,6 @@ namespace Streetwriters.Identity.Validation
|
|||||||
|
|
||||||
public string GrantType => Config.EMAIL_GRANT_TYPE;
|
public string GrantType => Config.EMAIL_GRANT_TYPE;
|
||||||
|
|
||||||
|
|
||||||
public async Task ValidateAsync(ExtensionGrantValidationContext context)
|
public async Task ValidateAsync(ExtensionGrantValidationContext context)
|
||||||
{
|
{
|
||||||
var email = context.Request.Raw["email"];
|
var email = context.Request.Raw["email"];
|
||||||
@@ -76,8 +75,14 @@ namespace Streetwriters.Identity.Validation
|
|||||||
};
|
};
|
||||||
|
|
||||||
var isMultiFactor = await UserManager.GetTwoFactorEnabledAsync(user);
|
var isMultiFactor = await UserManager.GetTwoFactorEnabledAsync(user);
|
||||||
|
if (!isMultiFactor)
|
||||||
|
{
|
||||||
|
context.Result.IsError = false;
|
||||||
|
context.Result.Subject = await TokenGenerationService.TransformTokenRequestAsync(context.Request, user, GrantType, [Config.MFA_PASSWORD_GRANT_TYPE_SCOPE]);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var primaryMethod = isMultiFactor ? MFAService.GetPrimaryMethod(user) : MFAMethods.Email;
|
var primaryMethod = MFAService.GetPrimaryMethod(user);
|
||||||
var secondaryMethod = MFAService.GetSecondaryMethod(user);
|
var secondaryMethod = MFAService.GetSecondaryMethod(user);
|
||||||
var sendPhoneNumber = primaryMethod == MFAMethods.SMS || secondaryMethod == MFAMethods.SMS;
|
var sendPhoneNumber = primaryMethod == MFAMethods.SMS || secondaryMethod == MFAMethods.SMS;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user