From 63eb3d24397e424f7bdf38dde5a1c31887346d9e Mon Sep 17 00:00:00 2001 From: maliming Date: Wed, 24 May 2023 09:57:01 +0800 Subject: [PATCH] Add `ResetRecoveryCodesAsync` method to `IdentityUserManager`. --- .../Volo/Abp/Identity/IdentityUserManager.cs | 10 ++++++++++ .../Volo/Abp/Identity/IdentityUserStore.cs | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs index 355378b8d0..cdbb289597 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserManager.cs @@ -275,4 +275,14 @@ public class IdentityUserManager : UserManager, IDomainService return passwordChangePeriodDays > 0 && lastPasswordChangeTime.AddDays(passwordChangePeriodDays) < DateTime.UtcNow; } + + public virtual async Task ResetRecoveryCodesAsync(IdentityUser user) + { + if (!(Store is IdentityUserStore identityUserStore)) + { + throw new AbpException($"Store is not an instance of {typeof(IdentityUserStore).AssemblyQualifiedName}"); + } + + await identityUserStore.SetTokenAsync(user, await identityUserStore.GetInternalLoginProviderAsync(), await identityUserStore.GetRecoveryCodeTokenNameAsync(), string.Empty, CancellationToken); + } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs index d7d26e02e1..83fe745677 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserStore.cs @@ -1108,6 +1108,21 @@ public class IdentityUserStore : return false; } + public virtual Task GetInternalLoginProviderAsync() + { + return Task.FromResult(InternalLoginProvider); + } + + public virtual Task GetAuthenticatorKeyTokenNameAsync() + { + return Task.FromResult(AuthenticatorKeyTokenName); + } + + public virtual Task GetRecoveryCodeTokenNameAsync() + { + return Task.FromResult(RecoveryCodeTokenName); + } + public virtual void Dispose() {