From abeb9280a24d798e982d1b194b989f7b8e20dbd4 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 15 Jul 2021 17:50:49 +0800 Subject: [PATCH] Add `tokenPurpose` parameter for `Generate` and `Verify` methods. --- .../Abp/Identity/LinkUserTokenProviderConsts.cs | 4 +++- .../Volo/Abp/Identity/IdentityUserLinkManager.cs | 8 ++++---- .../AspNetCore/LinkUserTokenProvider_Tests.cs | 14 ++++++++------ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/LinkUserTokenProviderConsts.cs b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/LinkUserTokenProviderConsts.cs index 044f034e46..863734ce8a 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/LinkUserTokenProviderConsts.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/LinkUserTokenProviderConsts.cs @@ -4,6 +4,8 @@ { public static string LinkUserTokenProviderName { get; set; } = "AbpLinkUser"; - public static string LinkUserTokenPurpose { get; set; } = "AbpLinkUserLogin"; + public static string LinkUserTokenPurpose { get; set; } = "AbpLinkUser"; + + public static string LinkUserLoginTokenPurpose { get; set; } = "AbpLinkUserLogin"; } } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserLinkManager.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserLinkManager.cs index 39b41247e4..35c76123cd 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserLinkManager.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUserLinkManager.cs @@ -124,7 +124,7 @@ namespace Volo.Abp.Identity } } - public virtual async Task GenerateLinkTokenAsync(IdentityLinkUserInfo targetLinkUser, CancellationToken cancellationToken = default) + public virtual async Task GenerateLinkTokenAsync(IdentityLinkUserInfo targetLinkUser, string tokenPurpose, CancellationToken cancellationToken = default) { using (CurrentTenant.Change(targetLinkUser.TenantId)) { @@ -132,11 +132,11 @@ namespace Volo.Abp.Identity return await UserManager.GenerateUserTokenAsync( user, LinkUserTokenProviderConsts.LinkUserTokenProviderName, - LinkUserTokenProviderConsts.LinkUserTokenPurpose); + tokenPurpose); } } - public virtual async Task VerifyLinkTokenAsync(IdentityLinkUserInfo targetLinkUser, string token, CancellationToken cancellationToken = default) + public virtual async Task VerifyLinkTokenAsync(IdentityLinkUserInfo targetLinkUser, string token, string tokenPurpose, CancellationToken cancellationToken = default) { using (CurrentTenant.Change(targetLinkUser.TenantId)) { @@ -144,7 +144,7 @@ namespace Volo.Abp.Identity return await UserManager.VerifyUserTokenAsync( user, LinkUserTokenProviderConsts.LinkUserTokenProviderName, - LinkUserTokenProviderConsts.LinkUserTokenPurpose, + tokenPurpose, token); } } diff --git a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs index 8e85a1125f..023537ebfd 100644 --- a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/LinkUserTokenProvider_Tests.cs @@ -31,14 +31,16 @@ namespace Volo.Abp.Identity.AspNetCore x.Value.ProviderType == typeof(LinkUserTokenProvider)); } - [Fact] - public virtual async Task GenerateAndVerifyLinkTokenAsync() + [Theory] + [InlineData("TestTokenPurpose1")] + [InlineData("TestTokenPurpose2")] + [InlineData("TestTokenPurpose3")] + public virtual async Task GenerateAndVerifyLinkTokenAsync(string tokenPurpose) { var john = await UserRepository.GetAsync(TestData.UserJohnId); - var token = await IdentityLinkUserManager.GenerateLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId)); - (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), token)).ShouldBeTrue(); - - (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), "123123")).ShouldBeFalse(); + var token = await IdentityLinkUserManager.GenerateLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), tokenPurpose); + (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), token, tokenPurpose)).ShouldBeTrue(); + (await IdentityLinkUserManager.VerifyLinkTokenAsync(new IdentityLinkUserInfo(john.Id, john.TenantId), "123123", tokenPurpose)).ShouldBeFalse(); } } }