Beispiel #1
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)));
            }
        }