Exemplo n.º 1
0
        /// <summary>
        /// 重置密码
        /// </summary>
        /// <param name="userName">用户名</param>
        /// <param name="newPsw">新密码</param>
        /// <param name="validateCode">验证码</param>
        /// <returns></returns>
        public async Task <OperationResult> ResetPassword(string userName, string newPsw, string validateCode)
        {
            userName.CheckNotNullOrEmpty("userName");
            newPsw.CheckNotNullOrEmpty("newPsw");
            validateCode.CheckNotNullOrEmpty("validateCode");

            //验证码
            var severCode = GetValidateCode(userName, CodeType.找回密码);

            if (severCode == null || severCode.Code != validateCode)
            {
                return(await Task.FromResult(new OperationResult(OperationResultType.ValidError, "验证码错误")));
            }

            var sUser = await UserManager.FindByNameAsync(userName);

            if (sUser == null)
            {
                return(new OperationResult(OperationResultType.NoChanged, "用户不存在"));
            }

            if (sUser.UserType != UserType.App用户)
            {
                return(new OperationResult(OperationResultType.NoChanged, "用户不存在"));
            }

            sUser.PasswordHash = UserManager.PasswordHasher.HashPassword(newPsw);

            var result = SysUserRepo.Update(sUser);

            return(result == 0 ? new OperationResult(OperationResultType.ValidError, "服务器繁忙") : new OperationResult(OperationResultType.Success, "密码重置成功"));
            //UserInfoRepo.Update(sUser);
            //UserManager.RemovePassword(sUser.Id);
            //UserManager.AddPassword(sUser.Id, newPsw);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 验证用户注册
        /// </summary>
        /// <param name="dto">用户注册信息</param>
        /// <param name="validateCode">验证码</param>
        /// <returns>业务操作结果</returns>

        public async Task <OperationResult> ValidateRegister(UserInfoRegistDto dto, string validateCode)
        {
            dto.CheckNotNull("dto");
            validateCode.CheckNotNullOrEmpty("validateCode");
            //验证码
            var severCode = GetValidateCode(dto.UserName, CodeType.用户注册);

            if (severCode == null || severCode.Code != validateCode)
            {
                return(new OperationResult(OperationResultType.ValidError, "验证码错误", 0));
            }
            if (SysUserRepo.CheckExists(p => p.UserName == dto.UserName))
            {
                return(new OperationResult(OperationResultType.ValidError, "账号已被使用", 0));
            }

            try
            {
                UserInfoRepo.UnitOfWork.TransactionEnabled = true;
                //验证密码格式
                IdentityResult result = await UserManager.PasswordValidator.ValidateAsync(dto.Password);

                if (!result.Succeeded)
                {
                    return(result.ToOperationResult());
                }

                SysUser sUser = new SysUser()
                {
                    UserName     = dto.UserName,
                    NickName     = dto.NickName,
                    PasswordHash = UserManager.PasswordHasher.HashPassword(dto.Password),//密码加密
                    UserType     = UserType.App用户
                };
                if (severCode.ValidateType == ValidateType.手机)
                {
                    sUser.PhoneNumber          = dto.UserName;
                    sUser.PhoneNumberConfirmed = true;
                }
                else
                {
                    sUser.Email          = dto.UserName;
                    sUser.EmailConfirmed = true;
                }
                await UserManager.CreateAsync(sUser);

                var userInfo = Mapper.Map <UserInfo>(dto);
                userInfo.SysUser = sUser;
                await UserInfoRepo.InsertAsync(userInfo);

                await UserInfoRepo.UnitOfWork.SaveChangesAsync();

                return(new OperationResult(OperationResultType.Success, "注册成功", userInfo.Id));
            }
            catch
            {
                return(new OperationResult(OperationResultType.NoChanged, "注册失败", 0));
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 更改用户名
        /// </summary>
        /// <param name="userName">原用户名</param>
        /// <param name="newUserName">新用户名</param>
        /// <param name="password">登录密码</param>
        /// <param name="validateCode">验证码</param>
        /// <returns>业务操作结果</returns>
        public async Task <OperationResult> ChangeUserName(string userName, string newUserName, string password, string validateCode)
        {
            userName.CheckNotNullOrEmpty("userName");
            newUserName.CheckNotNullOrEmpty("newUserName");
            validateCode.CheckNotNullOrEmpty("validateCode");
            //验证码
            var severCode = GetValidateCode(newUserName, CodeType.更换手机);

            if (severCode == null || severCode.Code != validateCode)
            {
                return(await Task.FromResult(new OperationResult(OperationResultType.ValidError, "验证码错误")));
            }

            var sUser = await UserManager.FindByNameAsync(userName);

            if (sUser == null)
            {
                return(new OperationResult(OperationResultType.NoChanged, "用户不存在"));
            }

            if (!await UserManager.CheckPasswordAsync(sUser, password))
            {
                return(new OperationResult(OperationResultType.ValidError, "登录密码错误", null));
            }

            if (SysUserRepo.CheckExists(p => p.UserName == newUserName, sUser.Id))
            {
                return(new OperationResult(OperationResultType.NoChanged, "该用户名已存在"));
            }

            sUser.UserName = userName;
            if (severCode.ValidateType == ValidateType.手机)
            {
                sUser.PhoneNumber          = newUserName;
                sUser.UserName             = newUserName;
                sUser.PhoneNumberConfirmed = true;
            }
            else
            {
                sUser.Email          = newUserName;
                sUser.EmailConfirmed = true;
            }
            await SysUserRepo.UpdateAsync(sUser);

            return(new OperationResult(OperationResultType.Success, "更改成功"));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 修改用户昵称和头像
        /// </summary>
        /// <param name="userId"></param>
        /// <param name="nickName"></param>
        /// <param name="headPic"></param>
        /// <returns></returns>
        public async Task <OperationResult> EditUserInfo(int userId, string nickName, string headPic)
        {
            UserInfoRepo.UnitOfWork.TransactionEnabled = true;
            var info = UserInfoRepo.GetByKey(userId);

            info.HeadPic = headPic;
            await UserInfoRepo.UpdateAsync(info);

            var sys = info.SysUser;

            sys.NickName = nickName;
            var result = await SysUserRepo.UpdateAsync(sys);

            await UserInfoRepo.UnitOfWork.SaveChangesAsync();

            return(new OperationResult(OperationResultType.Success, "修改成功"));
        }
Exemplo n.º 5
0
        /// <summary>
        /// 保存UserInfo信息(新增/更新)
        /// </summary>
        /// <param name="updateForeignKey">更新时是否更新外键信息</param>
        /// <param name="dtos">要保存的UserInfoDto信息</param>
        /// <returns>业务操作集合</returns>
        public async Task <OperationResult> SaveUserInfos(bool updateForeignKey = false, params UserInfoDto[] dtos)
        {
            try
            {
                dtos.CheckNotNull("dtos");
                var addDtos    = dtos.Where(p => p.Id == 0).ToArray();
                var updateDtos = dtos.Where(p => p.Id != 0).ToArray();

                UserInfoRepo.UnitOfWork.TransactionEnabled = true;

                Action <UserInfoDto> checkAction = dto =>
                {
                    if (UserInfoRepo.CheckExists(p => p.PhoneNo == dto.PhoneNo, dto.Id))
                    {
                        throw new Exception("“{0}”已被使用".FormatWith("手机号"));
                    }
                };
                Func <UserInfoDto, UserInfo, UserInfo> updateFunc = (dto, entity) =>
                {
                    if (dto.Id == 0 || updateForeignKey)
                    {
                        entity.SysUser = SysUserRepo.GetByKey(dto.SysUserId);
                    }
                    return(entity);
                };
                if (addDtos.Length > 0)
                {
                    UserInfoRepo.Insert(addDtos, checkAction, updateFunc);
                }
                if (updateDtos.Length > 0)
                {
                    UserInfoRepo.Update(updateDtos, checkAction, updateFunc);
                }
                await UserInfoRepo.UnitOfWork.SaveChangesAsync();

                return(new OperationResult(OperationResultType.Success, "保存成功"));
            }
            catch (Exception e)
            {
                return(new OperationResult(OperationResultType.Error, e.Message));
            }
        }
Exemplo n.º 6
0
        public async Task <IHttpActionResult> DelUserInfo(string phoneNo)
        {
            var sysUser = SysUserRepo.Entities.SingleOrDefault(m => m.UserName == phoneNo);

            var userInfo = UserInfoRepo.Entities.SingleOrDefault(m => m.SysUser.UserName == phoneNo);

            SysUserRepo.Delete(sysUser.Id);
            return(Json(CdkxResult.Success()));

            // UserContract.UserInfos.SingleOrDefault(m => m.SysUser.UserName == phoneNo);
            //var afterService = AfterServiceRepo.Entities.SingleOrDefault(m => m.User.UserName == phoneNo);
            //var sysUserLogin = SysUserLoginRepo.Entities.SingleOrDefault(m => m.User.UserName == phoneNo);
            //var sysUserRoleMap = SysUserRoleMapRepo.Entities.SingleOrDefault(m => m.User.UserName == phoneNo);
            //var sysUserClaim = SysUserClaimRepo.Entities.SingleOrDefault(m => m.User.UserName == phoneNo);
            //SysUserRepo.UnitOfWork.TransactionEnabled = true;


            //if (sysUserClaim != null)
            //{

            //}
            //if (sysUserClaim != null)
            //{
            //    SysUserClaimRepo.Delete(sysUserClaim.Id);
            //}
            //if (sysUserLogin != null)
            //{
            //    SysUserLoginRepo.Delete(sysUserLogin.Id);
            //}
            //if (afterService != null)
            //{
            //    AfterServiceRepo.Delete(afterService.Id);
            //}
            //if (userInfo != null)
            //{
            //    UserInfoRepo.Delete(userInfo.Id);
            //}
            //SysUserRepo.Delete(sysUser.Id);

            //return Json((SysUserRepo.UnitOfWork.SaveChanges() == 0 ? BodeResult.NoChanged(): BodeResult.Success()).ToApiResult());
        }
Exemplo n.º 7
0
        /// <summary>
        /// 验证注册码是否正确
        /// </summary>
        /// <param name="phoneNo"></param>
        /// <param name="validateCode"></param>
        /// <returns></returns>
        public async Task <OperationResult> ValidateCode(string phoneNo, CodeType codeType, string validateCode)
        {
            var severCode = GetValidateCode(phoneNo, codeType);

            if (severCode == null || severCode.Code != validateCode)
            {
                return(new OperationResult(OperationResultType.ValidError, "验证码错误", 0));
            }
            if (SysUserRepo.CheckExists(p => p.UserName == phoneNo))
            {
                if (codeType == CodeType.用户注册)
                {
                    return(new OperationResult(OperationResultType.ValidError, "账号已被使用", 0));
                }
            }
            else
            {
                if (codeType == CodeType.更换手机 || codeType == CodeType.找回密码 || codeType == CodeType.临时密码)
                {
                    return(CdkxResult.ValidError("帐号不存在."));
                }
            }
            return(CdkxResult.Success());
        }
Exemplo n.º 8
0
        /// <summary>
        /// 更改手机号
        /// </summary>
        /// <param name="phoneNo">原手机号</param>
        /// <param name="newPhoneNo">新手机号</param>
        /// <param name="password">登录密码</param>
        /// <param name="validateCode">验证码</param>
        /// <returns>业务操作结果</returns>
        public async Task <OperationResult> ChangePhoneNo(string phoneNo, string newPhoneNo, string password, string validateCode)
        {
            phoneNo.CheckNotNullOrEmpty("phoneNo");
            newPhoneNo.CheckNotNullOrEmpty("newPhoneNo");
            validateCode.CheckNotNullOrEmpty("validateCode");
            //验证码
            var severCode = GetValidateCode(newPhoneNo, CodeType.更换手机);

            if (severCode != validateCode)
            {
                return(await Task.FromResult(new OperationResult(OperationResultType.ValidError, "验证码错误")));
            }

            var sUser = await UserManager.FindByNameAsync(phoneNo);

            if (sUser == null)
            {
                return(new OperationResult(OperationResultType.NoChanged, "用户不存在"));
            }

            if (!await UserManager.CheckPasswordAsync(sUser, password))
            {
                return(new OperationResult(OperationResultType.ValidError, "登录密码错误", null));
            }

            if (SysUserRepo.CheckExists(p => p.UserName == newPhoneNo || p.PhoneNumber == newPhoneNo, sUser.Id))
            {
                return(new OperationResult(OperationResultType.NoChanged, "该手机号已注册"));
            }

            sUser.UserName    = newPhoneNo;
            sUser.PhoneNumber = newPhoneNo;
            await SysUserRepo.UpdateAsync(sUser);

            return(new OperationResult(OperationResultType.Success, "手机号更改成功"));
        }
Exemplo n.º 9
0
 /// <summary>
 /// 用model更新用户信息
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public int UpdateUserInfo(SysUser model)
 {
     return(SysUserRepo.Update(model));
 }