Example #1
0
        /// <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>());
        }
Example #2
0
        /// <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
            });
        }
Example #3
0
 /// <summary>
 /// 新增或更改用户管理
 /// </summary>
 public async Task CreateOrUpdateUserAsync(GetUserForEdit input)
 {
     if (input.UserEditDto.Id.HasValue)
     {
         await UpdateUserAsync(input);
     }
     else
     {
         await CreateUserAsync(input);
     }
 }
Example #4
0
        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 }));
        }
Example #5
0
        /// <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);
        }
Example #6
0
        /// <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);
        }