|
|
|
|
@ -10,27 +10,66 @@ namespace Volo.Abp.Identity
|
|
|
|
|
|
|
|
|
|
public class UserAppService : ApplicationService, IUserAppService
|
|
|
|
|
{
|
|
|
|
|
private readonly IdentityUserManager _userManager;
|
|
|
|
|
private readonly IIdentityUserRepository _userRepository;
|
|
|
|
|
|
|
|
|
|
public UserAppService(IIdentityUserRepository userRepository)
|
|
|
|
|
public UserAppService(IdentityUserManager userManager, IIdentityUserRepository userRepository)
|
|
|
|
|
{
|
|
|
|
|
_userManager = userManager;
|
|
|
|
|
_userRepository = userRepository;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<ListResultDto<IdentityUserDto>> Get()
|
|
|
|
|
public async Task<IdentityUserDto> GetAsync(Guid id)
|
|
|
|
|
{
|
|
|
|
|
var users = await _userRepository.GetListAsync();
|
|
|
|
|
return ObjectMapper.Map<IdentityUser, IdentityUserDto>(
|
|
|
|
|
await _userManager.GetByIdAsync(id)
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new ListResultDto<IdentityUserDto>(
|
|
|
|
|
ObjectMapper.Map<List<IdentityUser>, List<IdentityUserDto>>(users)
|
|
|
|
|
public async Task<PagedResultDto<IdentityUserDto>> GetListAsync(PagedAndSortedResultRequestDto input)
|
|
|
|
|
{
|
|
|
|
|
var userCount = (int) await _userRepository.GetCountAsync();
|
|
|
|
|
var userDtos = ObjectMapper.Map<List<IdentityUser>, List<IdentityUserDto>>(
|
|
|
|
|
await _userRepository.GetListAsync(input.Sorting, input.MaxResultCount, input.SkipCount)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return new PagedResultDto<IdentityUserDto>(userCount, userDtos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<IdentityUserDto> Get(Guid id)
|
|
|
|
|
public async Task<IdentityUserDto> CreateAsync(IdentityUserCreateOrUpdateDto input)
|
|
|
|
|
{
|
|
|
|
|
var user = await _userRepository.GetAsync(id);
|
|
|
|
|
var user = new IdentityUser(GuidGenerator.Create(), input.UserName);
|
|
|
|
|
|
|
|
|
|
await UpdateUserProperties(input, user);
|
|
|
|
|
await _userManager.CreateAsync(user, input.Password);
|
|
|
|
|
await CurrentUnitOfWork.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
return ObjectMapper.Map<IdentityUser, IdentityUserDto>(user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task<IdentityUserDto> UpdateAsync(Guid id, IdentityUserCreateOrUpdateDto input)
|
|
|
|
|
{
|
|
|
|
|
var user = await _userManager.GetByIdAsync(id);
|
|
|
|
|
|
|
|
|
|
await _userManager.SetUserNameAsync(user, input.UserName);
|
|
|
|
|
await UpdateUserProperties(input, user);
|
|
|
|
|
await CurrentUnitOfWork.SaveChangesAsync();
|
|
|
|
|
|
|
|
|
|
return ObjectMapper.Map<IdentityUser, IdentityUserDto>(user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task DeleteAsync(Guid id)
|
|
|
|
|
{
|
|
|
|
|
var user = await _userManager.GetByIdAsync(id);
|
|
|
|
|
await _userManager.DeleteAsync(user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private async Task UpdateUserProperties(IdentityUserCreateOrUpdateDto input, IdentityUser user)
|
|
|
|
|
{
|
|
|
|
|
await _userManager.SetEmailAsync(user, input.Email);
|
|
|
|
|
await _userManager.SetPhoneNumberAsync(user, input.PhoneNumber);
|
|
|
|
|
await _userManager.SetTwoFactorEnabledAsync(user, input.TwoFactorEnabled);
|
|
|
|
|
await _userManager.SetLockoutEnabledAsync(user, input.LockoutEnabled);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|