/// <summary> /// 新增用户管理 /// </summary> public virtual async Task <UserEditDto> CreateUserAsync(GetUserForEdit input) { //TODO:新增前的逻辑判断,是否允许新增 var user = input.UserEditDto.MapTo <User>(); user.TenantId = AbpSession.TenantId; user.Password = new PasswordHasher().HashPassword(User.DefaultPassword); user.IsEmailConfirmed = true; user.EmailAddress = user.EmailAddress.IsNullOrEmpty() ? user.PhoneNumber + "@default.com" : user.EmailAddress; user.Surname = user.Name; // 默认启用 user.IsActive = true; user.Roles = new List <UserRole>(); foreach (var userRoleDto in input.UserRoleDtos.Where(p => p.IsAssigned)) { user.Roles.Add(new UserRole { RoleId = userRoleDto.RoleId }); } user.Id = await _userRepository.InsertAndGetIdAsync(user); if (input.OuId.HasValue) { await UserManager.AddToOrganizationUnitAsync(user.Id, input.OuId.Value); } return(user.MapTo <UserEditDto>()); }
/// <summary> /// 检查用户输入错误 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <CustomerModelStateValidationDto> CheckErrorAsync(GetUserForEdit input) { if (await _userRepository.FirstOrDefaultAsync(p => p.UserName == input.UserEditDto.UserName && p.Id != input.UserEditDto.Id) != null) { return(new CustomerModelStateValidationDto() { HasModelError = true, ErrorMessage = $"登录名{input.UserEditDto.UserName}已存在", Key = "UserEditDto.UserName" }); } if (await _userRepository.FirstOrDefaultAsync(p => p.EmailAddress == input.UserEditDto.EmailAddress && p.Id != input.UserEditDto.Id) != null) { return new CustomerModelStateValidationDto() { HasModelError = true, ErrorMessage = $"电子邮件{input.UserEditDto.EmailAddress}已存在", Key = "UserEditDto.EmailAddress" } } ; return(new CustomerModelStateValidationDto() { HasModelError = false }); }
/// <summary> /// 新增或更改用户管理 /// </summary> public async Task CreateOrUpdateUserAsync(GetUserForEdit input) { if (input.UserEditDto.Id.HasValue) { await UpdateUserAsync(input); } else { await CreateUserAsync(input); } }
public async Task <ActionResult> Create(GetUserForEdit dto) { if (!CheckModelState(await _userAppService.CheckErrorAsync(dto))) { return(View(dto)); } await _userAppService.CreateOrUpdateUserAsync(dto); return(RedirectToAction("Index", new { ouId = dto.OuId })); }
/// <summary> /// 编辑用户管理 /// </summary> public virtual async Task UpdateUserAsync(GetUserForEdit input) { //TODO:更新前的逻辑判断,是否允许更新 var entity = await _userRepository.GetAsync(input.UserEditDto.Id.Value); input.UserEditDto.MapTo(entity); await _userRepository.UpdateAsync(entity); var roleNames = input.UserRoleDtos.Where(p => p.IsAssigned).Select(p => p.RoleName).ToArray(); await UserManager.SetRoles(entity, roleNames); }
/// <summary> /// 通过Id获取用户管理信息进行编辑或修改 /// </summary> public async Task <GetUserForEdit> GetUserForEditAsync(NullableIdDto <long> input) { var myroles = await _roleManager.FindByUserIdAsync(AbpSession.UserId.Value); var myMax = myroles.Max(r => r.Weight); var userRoleDtos = (await _roleManager.Roles .Where(p => p.Weight <= myMax) .OrderBy(r => r.DisplayName) .Select(r => new UserRoleDto { RoleId = r.Id, RoleName = r.Name, RoleDisplayName = r.DisplayName }) .ToArrayAsync()); var output = new GetUserForEdit(); UserEditDto userEditDto; if (input.Id.HasValue) { var entity = await _userRepository.GetAsync(input.Id.Value); userEditDto = entity.MapTo <UserEditDto>(); foreach (var userRoleDto in userRoleDtos) { userRoleDto.IsAssigned = await UserManager.IsInRoleAsync(input.Id.Value, userRoleDto.RoleName); } } else { userEditDto = new UserEditDto() { ShouldChangePasswordOnNextLogin = true }; // 创建时选中默认角色 foreach (var defaultRole in await _roleManager.Roles.Where(r => r.IsDefault).ToListAsync()) { var defaultUserRole = userRoleDtos.FirstOrDefault(ur => ur.RoleName == defaultRole.Name); if (defaultUserRole != null) { defaultUserRole.IsAssigned = true; } } } output.UserRoleDtos = userRoleDtos; output.UserEditDto = userEditDto; return(output); }