You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
abp/src/Volo.Abp.Identity.Application/Volo/Abp/Identity/UserAppService.cs

76 lines
2.8 KiB

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
namespace Volo.Abp.Identity
{
//TODO: Consider a way of passing cancellation token to all async application service methods!
public class UserAppService : ApplicationService, IUserAppService
{
private readonly IdentityUserManager _userManager;
private readonly IIdentityUserRepository _userRepository;
public UserAppService(IdentityUserManager userManager, IIdentityUserRepository userRepository)
{
_userManager = userManager;
_userRepository = userRepository;
}
public async Task<IdentityUserDto> GetAsync(Guid id)
{
return ObjectMapper.Map<IdentityUser, IdentityUserDto>(
await _userManager.GetByIdAsync(id)
);
}
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> CreateAsync(IdentityUserCreateOrUpdateDto input)
{
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);
}
}
}