diff --git a/Streetwriters.Common/Models/UserModel.cs b/Streetwriters.Common/Models/UserModel.cs index 3847e2c..2d8336e 100644 --- a/Streetwriters.Common/Models/UserModel.cs +++ b/Streetwriters.Common/Models/UserModel.cs @@ -35,6 +35,9 @@ namespace Streetwriters.Common.Models [JsonPropertyName("isEmailConfirmed")] public bool IsEmailConfirmed { get; set; } + [JsonPropertyName("marketingConsent")] + public bool MarketingConsent { get; set; } + [JsonPropertyName("mfa")] public MFAConfig MFA { get; set; } } diff --git a/Streetwriters.Identity/Controllers/AccountController.cs b/Streetwriters.Identity/Controllers/AccountController.cs index 0def1e0..dba6fce 100644 --- a/Streetwriters.Identity/Controllers/AccountController.cs +++ b/Streetwriters.Identity/Controllers/AccountController.cs @@ -169,12 +169,15 @@ namespace Streetwriters.Identity.Controllers if (!await IsUserValidAsync(user, client.Id)) return BadRequest($"Unable to find user with ID '{UserManager.GetUserId(User)}'."); + var claims = await UserManager.GetClaimsAsync(user); + var marketingConsentClaim = claims.FirstOrDefault((claim) => claim.Type == $"{client.Id}:marketing_consent"); + return Ok(new UserModel { UserId = user.Id.ToString(), Email = user.Email, IsEmailConfirmed = user.EmailConfirmed, - // PhoneNumber = user.PhoneNumberConfirmed ? user.PhoneNumber : null, + MarketingConsent = marketingConsentClaim == null, MFA = new MFAConfig { IsEnabled = user.TwoFactorEnabled, @@ -308,6 +311,17 @@ namespace Streetwriters.Identity.Controllers } return BadRequest(result.Errors.ToErrors()); } + case "change_marketing_consent": + { + var claimType = $"{client.Id}:marketing_consent"; + var claims = await UserManager.GetClaimsAsync(user); + var marketingConsentClaim = claims.FirstOrDefault((claim) => claim.Type == claimType); + if (marketingConsentClaim != null) await UserManager.RemoveClaimAsync(user, marketingConsentClaim); + if (!form.Enabled) + await UserManager.AddClaimAsync(user, new Claim(claimType, "false")); + return Ok(); + } + } return BadRequest("Invalid type."); } diff --git a/Streetwriters.Identity/Models/UpdateUserForm.cs b/Streetwriters.Identity/Models/UpdateUserForm.cs index dcf5945..3136e05 100644 --- a/Streetwriters.Identity/Models/UpdateUserForm.cs +++ b/Streetwriters.Identity/Models/UpdateUserForm.cs @@ -32,6 +32,12 @@ namespace Streetwriters.Identity.Models get; set; } + [BindProperty(Name = "enabled")] + public bool Enabled + { + get; set; + } + [BindProperty(Name = "old_password")] public string OldPassword {