示例#1
0
        public async Task <ActionResult> Index()
        {
            if (IdentityContract.Users.Count() <= 2)
            {
                UserInputDto dto = new UserInputDto()
                {
                    RecommendId    = 0,
                    UserName       = "******",
                    NickName       = "管理员",
                    Email          = "*****@*****.**",
                    EmailConfirmed = true,
                    PhoneNumber    = "13561962764",
                    Password       = "******"
                };
                OperationResult result = await IdentityContract.CreateUsers(dto);

                if (!result.Successed)
                {
                    return(Content("创建初始用户失败:" + result.Message));
                }
                UserRoleMapInputDto mapDto = new UserRoleMapInputDto()
                {
                    UserId = 1, RoleId = 1
                };
                result = await IdentityContract.CreateUserRoleMaps(mapDto);

                if (!result.Successed)
                {
                    return(Content("给初始用户赋角色失败:" + result.Message));
                }
            }

            return(View());
        }
示例#2
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            model.CheckNotNull(nameof(model));

            if (Session["Reg_EmailCode"] == null || Session["Reg_EmailCode"].ToString() != model.EmailCode)
            {
                return(Json(new AjaxResult("验证码错误", AjaxResultType.Error)));
            }

            UserInputDto dto = model.MapTo <UserInputDto>();

            dto.NickName       = dto.UserName;
            dto.RecommendId    = dto.RecommendId == 0 ? 1 : dto.RecommendId;
            dto.EmailConfirmed = true; //邮箱通过验证

            OperationResult result = await IdentityContract.CreateUsers(dto);

            if (result.ResultType == OperationResultType.Success)
            {
                //初始化用户角色
                User newuser = IdentityContract.Users.SingleOrDefault(u => u.UserName == dto.UserName);
                if (newuser != null)
                {
                    UserRoleMapInputDto mapDto = new UserRoleMapInputDto()
                    {
                        UserId = newuser.Id, RoleId = 2
                    };
                    result = await IdentityContract.CreateUserRoleMaps(mapDto);

                    if (!result.Successed)
                    {
                        return(Json(new AjaxResult(result.Message, AjaxResultType.Error)));
                    }
                }
                #region 用户登录
                LoginInfo loginInfo = new LoginInfo
                {
                    UserName = dto.UserName,
                    Password = dto.Password,
                    Remember = false
                };
                OperationResult <User> loginresult = await IdentityContract.Login(loginInfo, true);

                if (loginresult.ResultType == OperationResultType.Success)
                {
                    User user = loginresult.Data;
                    AuthenticationManager.SignOut();
                    await SignInManager.SignInAsync(user, loginInfo.Remember, true);
                }
                #endregion
                return(Json(new AjaxResult("登录成功", AjaxResultType.Success)));
            }
            else
            {
                return(Json(new AjaxResult(result.Message, AjaxResultType.Error)));
            }
        }
        /// <summary>
        /// 由选中的用户编号设置用户拥有的角色
        /// </summary>
        /// <param name="userId">用户编号</param>
        /// <param name="roleIds">角色编号集合</param>
        /// <returns>业务操作结果</returns>
        public async Task <OperationResult> SetUserRoleMaps(int userId, int[] roleIds)
        {
            User user = await UserManager.FindByIdAsync(userId);

            if (user == null)
            {
                return(new OperationResult(OperationResultType.QueryNull, $"编号为“{userId}”的用户信息不存在"));
            }
            int[] existRoleIds  = UserRoleMapRepository.Entities.Where(m => m.User.Id == userId).Select(m => m.Role.Id).Distinct().ToArray();
            int[] addRoleIds    = roleIds.Except(existRoleIds).ToArray();
            int[] removeRoleIds = existRoleIds.Except(roleIds).ToArray();
            UserRoleMapRepository.UnitOfWork.TransactionEnabled = true;
            foreach (int roleId in addRoleIds)
            {
                UserRoleMapInputDto dto = new UserRoleMapInputDto()
                {
                    UserId = userId, RoleId = roleId
                };
                OperationResult result = await UserManager.CreateUserRoleMapAsync(dto);

                if (!result.Successed)
                {
                    return(result);
                }
            }
            int[] removeMapIds = UserRoleMapRepository.Entities.Where(m => m.User.Id == userId && removeRoleIds.Contains(m.Role.Id))
                                 .Select(m => m.Id).ToArray();
            foreach (int mapId in removeMapIds)
            {
                OperationResult result = await UserManager.DeleteUserRoleMapAsync(mapId);

                if (!result.Successed)
                {
                    return(result);
                }
            }
            return(await UserRoleMapRepository.UnitOfWork.SaveChangesAsync() > 0
                ? new OperationResult(OperationResultType.Success,
                                      "用户设置角色操作成功,共添加 {0} 个角色,删除 {1} 个角色".FormatWith(addRoleIds.Length, removeMapIds.Length))
                : new OperationResult(OperationResultType.NoChanged));
        }