diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs index d426050117..9b639f4b34 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs @@ -3,6 +3,7 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; using Volo.Abp.Domain; +using Volo.Abp.EventBus.Distributed; using Volo.Abp.Identity.Localization; using Volo.Abp.Localization; using Volo.Abp.Modularity; @@ -21,29 +22,34 @@ namespace Volo.Abp.Identity { public override void ConfigureServices(ServiceConfigurationContext context) { - context.Services.Configure(options => + Configure(options => { options.ManagementProviders.Add(); options.ManagementProviders.Add(); }); - context.Services.Configure(options => + Configure(options => { options.DefinitionProviders.Add(); }); - context.Services.Configure(options => + Configure(options => { options.FileSets.AddEmbedded(); }); - context.Services.Configure(options => + Configure(options => { options.Resources .Get() .AddVirtualJson("/Volo/Abp/Identity/Localization/Domain"); }); + Configure(options => + { + options.EtoMappings.Add(); + }); + var identityBuilder = context.Services.AddAbpIdentity(options => { options.User.RequireUniqueEmail = true; 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 dc93110075..449561bc27 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 @@ -10,11 +10,12 @@ using Volo.Abp.Data; using Volo.Abp.Domain.Entities; using Volo.Abp.Domain.Entities.Auditing; using Volo.Abp.Guids; +using Volo.Abp.ObjectMapping; using Volo.Abp.Users; namespace Volo.Abp.Identity { - public class IdentityUser : FullAuditedAggregateRoot, IHasConcurrencyStamp, IUser, IHasExtraProperties + public class IdentityUser : FullAuditedAggregateRoot, IHasConcurrencyStamp, IUser, IHasExtraProperties, IMapTo { public virtual Guid? TenantId { get; protected set; } @@ -282,5 +283,36 @@ namespace Volo.Abp.Identity { return $"{base.ToString()}, UserName = {UserName}"; } + + UserEto IMapTo.MapTo() + { + //TODO: Instead, consider to user automapper (but it makes dependency just for a small code part)?? + + return new UserEto + { + Name = Name, + Email = Email, + EmailConfirmed = EmailConfirmed, + Id = Id, + PhoneNumber = PhoneNumber, + PhoneNumberConfirmed = PhoneNumberConfirmed, + Surname = Surname, + TenantId = TenantId, + UserName = UserName + }; + } + + void IMapTo.MapTo(UserEto destination) + { + destination.Name = Name; + destination.Email = Email; + destination.EmailConfirmed = EmailConfirmed; + destination.Id = Id; + destination.PhoneNumber = PhoneNumber; + destination.PhoneNumberConfirmed = PhoneNumberConfirmed; + destination.Surname = Surname; + destination.TenantId = TenantId; + destination.UserName = UserName; + } } } diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo.Abp.Users.Abstractions.csproj b/modules/users/src/Volo.Abp.Users.Abstractions/Volo.Abp.Users.Abstractions.csproj index 46759a09d6..9104c4fc42 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo.Abp.Users.Abstractions.csproj +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo.Abp.Users.Abstractions.csproj @@ -1,4 +1,4 @@ - + @@ -14,6 +14,7 @@ + diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/AbpUsersAbstractionModule.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/AbpUsersAbstractionModule.cs index e65c62d741..b0e598dbfe 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/AbpUsersAbstractionModule.cs +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/AbpUsersAbstractionModule.cs @@ -1,11 +1,17 @@ using Microsoft.Extensions.DependencyInjection; +using Volo.Abp.EventBus; using Volo.Abp.Modularity; +using Volo.Abp.MultiTenancy; using Volo.Abp.Settings; namespace Volo.Abp.Users { //TODO: Consider to (somehow) move this to the framework to the same assemblily of ICurrentUser! + [DependsOn( + typeof(AbpMultiTenancyAbstractionsModule), + typeof(AbpEventBusModule) + )] public class AbpUsersAbstractionModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs index be70f20047..391e0ef955 100644 --- a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserData.cs @@ -7,6 +7,8 @@ namespace Volo.Abp.Users { public Guid Id { get; set; } + public Guid? TenantId { get; set; } + public string UserName { get; set; } public string Name { get; set; } @@ -21,8 +23,6 @@ namespace Volo.Abp.Users public bool PhoneNumberConfirmed { get; set; } - public Guid? TenantId { get; set; } - public UserData() { diff --git a/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs new file mode 100644 index 0000000000..6467ec052d --- /dev/null +++ b/modules/users/src/Volo.Abp.Users.Abstractions/Volo/Abp/Users/UserEto.cs @@ -0,0 +1,27 @@ +using System; +using Volo.Abp.EventBus; + +namespace Volo.Abp.Users +{ + [EventName("Volo.Abp.Users.User")] + public class UserEto : IUserData + { + public Guid Id { get; set; } + + public Guid? TenantId { get; set; } + + public string UserName { get; set; } + + public string Name { get; set; } + + public string Surname { get; set; } + + public string Email { get; set; } + + public bool EmailConfirmed { get; set; } + + public string PhoneNumber { get; set; } + + public bool PhoneNumberConfirmed { get; set; } + } +}