Guest User

Untitled

a guest
Apr 2nd, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.83 KB | None | 0 0
  1. [AbpAuthorize(PermissionNames.Pages_Users)]
  2. public class UserAppService : AsyncCrudAppService<User, UserDto, long, PagedResultRequestDto, CreateUserDto, UpdateUserDto>, IUserAppService
  3. {
  4. private readonly UserManager _userManager;
  5. private readonly RoleManager _roleManager;
  6. private readonly IRepository<Role> _roleRepository;
  7.  
  8. public UserAppService(
  9. IRepository<User, long> repository,
  10. UserManager userManager,
  11. IRepository<Role> roleRepository,
  12. RoleManager roleManager)
  13. : base(repository)
  14. {
  15. _userManager = userManager;
  16. _roleRepository = roleRepository;
  17. _roleManager = roleManager;
  18. }
  19.  
  20. [HttpGet]
  21. public override async Task<UserDto> Get(EntityDto<long> input)
  22. {
  23. var user = await base.Get(input);
  24. var userRoles = await _userManager.GetRolesAsync(user.Id);
  25. user.Roles = userRoles.Select(ur => ur).ToArray();
  26. return user;
  27. }
  28.  
  29. [HttpPost]
  30. public override async Task<UserDto> Create(CreateUserDto input)
  31. {
  32. CheckCreatePermission();
  33.  
  34. var user = ObjectMapper.Map<User>(input);
  35.  
  36. user.TenantId = AbpSession.TenantId;
  37. user.Password = new PasswordHasher().HashPassword(input.Password);
  38. user.IsEmailConfirmed = true;
  39.  
  40. //Assign roles
  41. user.Roles = new Collection<UserRole>();
  42. foreach (var roleName in input.RoleNames)
  43. {
  44. var role = await _roleManager.GetRoleByNameAsync(roleName);
  45. user.Roles.Add(new UserRole(AbpSession.TenantId, user.Id, role.Id));
  46. }
  47.  
  48. CheckErrors(await _userManager.CreateAsync(user));
  49.  
  50. return MapToEntityDto(user);
  51. }
  52.  
  53. [HttpPut]
  54. public override async Task<UserDto> Update(UpdateUserDto input)
  55. {
  56. CheckUpdatePermission();
  57.  
  58. var user = await _userManager.GetUserByIdAsync(input.Id);
  59.  
  60. MapToEntity(input, user);
  61.  
  62. CheckErrors(await _userManager.UpdateAsync(user));
  63.  
  64. if (input.RoleNames != null)
  65. {
  66. CheckErrors(await _userManager.SetRoles(user, input.RoleNames));
  67. }
  68.  
  69. return await Get(input);
  70. }
  71.  
  72. [HttpDelete]
  73. public override async Task Delete(EntityDto<long> input)
  74. {
  75. var user = await _userManager.GetUserByIdAsync(input.Id);
  76. await _userManager.DeleteAsync(user);
  77. }
  78.  
  79. [HttpGet]
  80. public async Task<ListResultDto<RoleDto>> GetRoles()
  81. {
  82. var roles = await _roleRepository.GetAllListAsync();
  83. return new ListResultDto<RoleDto>(ObjectMapper.Map<List<RoleDto>>(roles));
  84. }
  85.  
  86. protected override User MapToEntity(CreateUserDto createInput)
  87. {
  88. var user = ObjectMapper.Map<User>(createInput);
  89. return user;
  90. }
  91.  
  92. protected override void MapToEntity(UpdateUserDto input, User user)
  93. {
  94. ObjectMapper.Map(input, user);
  95. }
  96.  
  97. protected override IQueryable<User> CreateFilteredQuery(PagedResultRequestDto input)
  98. {
  99. return Repository.GetAllIncluding(x => x.Roles);
  100. }
  101.  
  102. protected override async Task<User> GetEntityByIdAsync(long id)
  103. {
  104. var user = Repository.GetAllIncluding(x => x.Roles).FirstOrDefault(x => x.Id == id);
  105. return await Task.FromResult(user);
  106. }
  107.  
  108. protected override IQueryable<User> ApplySorting(IQueryable<User> query, PagedResultRequestDto input)
  109. {
  110. return query.OrderBy(r => r.UserName);
  111. }
  112.  
  113. protected virtual void CheckErrors(IdentityResult identityResult)
  114. {
  115. identityResult.CheckErrors(LocalizationManager);
  116. }
  117. }
Add Comment
Please, Sign In to add comment