diff --git a/AsbCloudApp/Data/UserDto.cs b/AsbCloudApp/Data/UserDto.cs index 68ecbf15..cc330b2c 100644 --- a/AsbCloudApp/Data/UserDto.cs +++ b/AsbCloudApp/Data/UserDto.cs @@ -11,6 +11,7 @@ public string Phone { get; set; } public string Position { get; set; } public int? IdCompany { get; set; } + public short? IdState { get; set; } public CompanyDto Company { get; set; } } } diff --git a/AsbCloudDb/Model/User.cs b/AsbCloudDb/Model/User.cs index da51bdb7..814e5eb8 100644 --- a/AsbCloudDb/Model/User.cs +++ b/AsbCloudDb/Model/User.cs @@ -26,7 +26,7 @@ namespace AsbCloudDb.Model public string PasswordHash { get; set; } [Column("state"), Comment("состояние:\n100 - удален")] - public short? State { get; set; } + public short? IdState { get; set; } [Column("name"), Comment("имя")] [StringLength(255)] diff --git a/AsbCloudInfrastructure/Services/AuthService.cs b/AsbCloudInfrastructure/Services/AuthService.cs index e483f015..e39a1757 100644 --- a/AsbCloudInfrastructure/Services/AuthService.cs +++ b/AsbCloudInfrastructure/Services/AuthService.cs @@ -49,7 +49,7 @@ namespace AsbCloudInfrastructure.Services var (identity, user) = await GetClaimsUserAsync(login, password, token) .ConfigureAwait(false); - if (identity == default || user.State == 0) + if (identity == default || user.IdState == 0) return null; var userDto = await userService.GetAsync(user.Id, token) @@ -93,7 +93,7 @@ namespace AsbCloudInfrastructure.Services var newUser = new User { IdCompany = userDto.IdCompany, - State = 0, + IdState = 0, Name = userDto.Name, Surname = userDto.Surname, Patronymic = userDto.Patronymic, diff --git a/AsbCloudInfrastructure/Services/UserService.cs b/AsbCloudInfrastructure/Services/UserService.cs index da06089f..f716246a 100644 --- a/AsbCloudInfrastructure/Services/UserService.cs +++ b/AsbCloudInfrastructure/Services/UserService.cs @@ -18,6 +18,14 @@ namespace AsbCloudInfrastructure.Services public ISet Includes { get; } = new SortedSet(); public IUserRoleService RoleService { get; } + private static readonly TypeAdapterConfig userTypeAdapterConfig = TypeAdapterConfig + .NewConfig() + .Ignore(dst => dst.Company, + dst => dst.FileMarks, + dst => dst.Files, + dst => dst.RelationUsersUserRoles) + .Config; + public UserService(IAsbCloudDbContext context, CacheDb cacheDb, IUserRoleService roleService) { var db = (AsbCloudDbContext)context; @@ -38,7 +46,7 @@ namespace AsbCloudInfrastructure.Services public async Task InsertAsync(UserExtendedDto dto, CancellationToken token = default) { - var entity = dto.Adapt(); + var entity = Convert(dto); var updatedEntity = await cacheUsers.InsertAsync(entity, token).ConfigureAwait(false); await UpdateRolesCacheForUserAsync((int)updatedEntity.Id, dto.RoleNames, token); return updatedEntity?.Id ?? 0; @@ -55,7 +63,7 @@ namespace AsbCloudInfrastructure.Services .ToList(); if (entities.Count == 0) return null; - var dtos = entities.Adapt().ToList(); + var dtos = entities.Select(Convert).ToList(); for (var i = 0; i < dtos.Count; i++) dtos[i].RoleNames = GetRolesNamesByIdUser(dtos[i].Id); @@ -65,14 +73,14 @@ namespace AsbCloudInfrastructure.Services public async Task GetAsync(int id, CancellationToken token = default) { var entity = await cacheUsers.FirstOrDefaultAsync(u=>u.Id == id, token).ConfigureAwait(false); - var dto = entity.Adapt(); + var dto = Convert(entity); dto.RoleNames = GetRolesNamesByIdUser(dto.Id); return dto; } public async Task UpdateAsync(int id, UserExtendedDto dto, CancellationToken token = default) { - var entity = dto.Adapt(); + var entity = Convert(dto); await UpdateRolesCacheForUserAsync(id, dto.RoleNames, token); var result = await cacheUsers.UpsertAsync(entity, token) @@ -166,5 +174,20 @@ namespace AsbCloudInfrastructure.Services return RoleService.HasPermission(relationsToRoles.Select(r => r.IdUserRole), permissionName); } + + protected virtual User Convert(UserExtendedDto dto) + { + var entity = dto.Adapt(userTypeAdapterConfig); + var oldUser = new Lazy(() => cacheUsers.FirstOrDefault(u => u.Id == dto.Id)); + if (string.IsNullOrEmpty(entity.PasswordHash)) + entity.PasswordHash = oldUser.Value.PasswordHash; + return entity; + } + + protected virtual UserExtendedDto Convert(User entity) + { + var dto = entity.Adapt(); + return dto; + } } }