diff --git a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/ExternalLoginProviderBase.cs b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/ExternalLoginProviderBase.cs index 930718aa5b..631a1593d2 100644 --- a/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/ExternalLoginProviderBase.cs +++ b/modules/identity/src/Volo.Abp.Identity.AspNetCore/Volo/Abp/Identity/AspNetCore/ExternalLoginProviderBase.cs @@ -48,12 +48,12 @@ namespace Volo.Abp.Identity.AspNetCore user.Name = externalUser.Name; user.Surname = externalUser.Surname; - user.SetLoginProvider(providerName); + user.IsExternal = true; user.SetEmailConfirmed(externalUser.EmailConfirmed ?? false); user.SetPhoneNumber(externalUser.PhoneNumber, externalUser.PhoneNumberConfirmed ?? false); - (await UserManager.CreateAsync(user, await RandomPasswordGenerator.CreateAsync())).CheckErrors(); + (await UserManager.CreateAsync(user)).CheckErrors(); if (externalUser.TwoFactorEnabled != null) { @@ -134,6 +134,8 @@ namespace Volo.Abp.Identity.AspNetCore (await UserManager.AddLoginAsync(user, new UserLoginInfo(providerName, externalUser.ProviderKey, providerName))).CheckErrors(); } + user.IsExternal = true; + (await UserManager.UpdateAsync(user)).CheckErrors(); } diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs index 8a38dd1498..287328573d 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IdentityUser.cs @@ -68,7 +68,7 @@ namespace Volo.Abp.Identity [DisableAuditing] public virtual string SecurityStamp { get; protected internal set; } - public virtual string LoginProvider { get; protected set; } + public virtual bool IsExternal { get; set; } /// /// Gets or sets a telephone number for the user. @@ -326,12 +326,6 @@ namespace Volo.Abp.Identity ); } - public virtual void SetLoginProvider([CanBeNull] string loginProvider) - { - LoginProvider = Check.Length(loginProvider, nameof(loginProvider), - IdentityUserConsts.MaxLoginProviderLength); - } - /// /// Use for regular email confirmation. /// Using this skips the confirmation process and directly sets the . diff --git a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs index 373abbe804..8efe82c5ce 100644 --- a/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs +++ b/modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/IdentityDbContextModelBuilderExtensions.cs @@ -43,6 +43,9 @@ namespace Volo.Abp.Identity.EntityFrameworkCore b.Property(u => u.LockoutEnabled).HasDefaultValue(false) .HasColumnName(nameof(IdentityUser.LockoutEnabled)); + b.Property(u => u.IsExternal).IsRequired().HasDefaultValue(false) + .HasColumnName(nameof(IdentityUser.IsExternal)); + b.Property(u => u.AccessFailedCount) .If(!builder.IsUsingOracle(), p => p.HasDefaultValue(0)) .HasColumnName(nameof(IdentityUser.AccessFailedCount)); diff --git a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/ExternalLoginProvider_Tests.cs b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/ExternalLoginProvider_Tests.cs index da0178a819..ee9a56432e 100644 --- a/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/ExternalLoginProvider_Tests.cs +++ b/modules/identity/test/Volo.Abp.Identity.AspNetCore.Tests/Volo/Abp/Identity/AspNetCore/ExternalLoginProvider_Tests.cs @@ -47,7 +47,7 @@ namespace Volo.Abp.Identity.AspNetCore user.TwoFactorEnabled.ShouldBeFalse(); user.PhoneNumber.ShouldBe("123"); user.PhoneNumberConfirmed.ShouldBeFalse(); - user.LoginProvider.ShouldBe("Fake"); + user.IsExternal.ShouldBeTrue(); var logins = user.Logins.Where(l => l.LoginProvider == "Fake").ToList(); logins.Count.ShouldBe(1);