diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityErrorDescriber.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityErrorDescriber.cs new file mode 100644 index 0000000000..3dea11faea --- /dev/null +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityErrorDescriber.cs @@ -0,0 +1,33 @@ +using JetBrains.Annotations; +using Microsoft.AspNetCore.Identity; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Localization; +using Volo.Abp.DependencyInjection; +using Volo.Abp.Identity.Localization; +using Volo.Abp.Localization; + +namespace Volo.Abp.Identity; + +[Dependency(ServiceLifetime.Scoped, ReplaceServices = true)] +[ExposeServices(typeof(IdentityErrorDescriber))] +public class AbpIdentityErrorDescriber : IdentityErrorDescriber +{ + protected IStringLocalizer Localizer { get; } + + public AbpIdentityErrorDescriber(IStringLocalizer localizer) + { + Localizer = localizer; + } + + public override IdentityError InvalidUserName([CanBeNull] string userName) + { + using (CultureHelper.Use("en")) + { + return new IdentityError + { + Code = nameof(InvalidUserName), + Description = Localizer["Volo.Abp.Identity:InvalidUserName", userName ?? ""] + }; + } + } +} diff --git a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpIdentityUserValidator_Tests.cs b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpIdentityUserValidator_Tests.cs index 6af6b4ff57..6b656fbec4 100644 --- a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpIdentityUserValidator_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/AbpIdentityUserValidator_Tests.cs @@ -19,6 +19,17 @@ public class AbpIdentityUserValidator_Tests : AbpIdentityAspNetCoreTestBase Localizer = GetRequiredService>(); } + [Fact] + public async Task InvalidUserName_Messages_Test() + { + var user = new IdentityUser(Guid.NewGuid(), "abp 123", "user@volosoft.com"); + var identityResult = await _identityUserManager.CreateAsync(user); + identityResult.Succeeded.ShouldBeFalse(); + identityResult.Errors.Count().ShouldBe(1); + identityResult.Errors.First().Code.ShouldBe("InvalidUserName"); + identityResult.Errors.First().Description.ShouldBe(Localizer["Volo.Abp.Identity:InvalidUserName", "abp 123"]); + } + [Fact] public async Task Can_Not_Use_Another_Users_Email_As_Your_Username_Test() {