Exemplo n.º 1
0
        public async Task <IActionResult> Post([FromBody] RegisterRequestModel model)
        {
            model.RoleName = "GooiosVip0";
            if (ModelState.IsValid)
            {
                //check the verification code
                var verification = await _verificationProxy.GetVerification(BizCode.Register, model.Mobile);

                if (verification == null)
                {
                    return(new BadRequestObjectResult("验证码不正确."));
                }

                if (verification.Code != model.VerificationCode)
                {
                    return(new BadRequestObjectResult("验证码不正确."));
                }

                var role = await _roleManager.FindByNameAsync(model.RoleName);

                if (role == null)
                {
                    return(new BadRequestObjectResult("找不到指定角色."));
                }

                var user = new ApplicationUser {
                    UserName = model.Mobile, PhoneNumber = model.Mobile
                };

                var result = await _userManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    await _verificationProxy.SetVerificationUsed(verification);

                    var r = await _userManager.AddToRoleAsync(user, model.RoleName);

                    return(new OkResult());
                }
                else
                {
                    return(new BadRequestObjectResult("创建用户失败."));
                }
            }
            else
            {
                var errors         = ModelState.Values.Select(o => o.Errors);
                var messageBuilder = new StringBuilder();
                foreach (var error in errors)
                {
                    string errMsg = string.Join(",", error.Select(o => o.ErrorMessage));
                    messageBuilder.Append(errMsg);
                    messageBuilder.Append(";");
                }

                return(new BadRequestObjectResult($"参数错误: {messageBuilder.ToString()}"));
            }
        }
Exemplo n.º 2
0
        public async Task <CookAppUserDto> VerifyCookAppUserByVerifyCode(string userName, string code)
        {
            var obj = _cookappUserRepo.GetFiltered(o => o.UserName == userName).FirstOrDefault();

            //_verificationProxy.Test(1);
            if (obj != null)
            {
                var verification = await _verificationProxy.GetVerification(BizCode.Login, userName);

                if (verification == null)
                {
                    return(null);
                }
                if (verification.Code != code)
                {
                    return(null);
                }

                await _verificationProxy.SetVerificationUsed(verification);

                ;
                return(MapperProvider.Mapper.Map <CookAppUserDto>(obj));
            }
            else
            {
                var verification = await _verificationProxy.GetVerification(BizCode.Login, userName);

                if (verification == null)
                {
                    return(null);
                }
                if (verification.Code != code)
                {
                    return(null);
                }

                var user = CookAppUserFactory.CreateInstance(userName, Guid.NewGuid().ToString().Substring(0, 8), userName, "");
                _cookappUserRepo.Add(user);
                _dbUnitOfWork.Commit();

                await _verificationProxy.SetVerificationUsed(verification);

                return(MapperProvider.Mapper.Map <CookAppUserDto>(user));
            }
        }
Exemplo n.º 3
0
        public async Task <IActionResult> ResetPassword([FromBody] ResetPasswordModel model)
        {
            if (model.ConfirmPassword != model.NewPassword)
            {
                return(new BadRequestObjectResult("密码与确认密码不匹配."));
            }

            var verification = await _verificationProxy.GetVerification(BizCode.ForgetPassword, model.Mobile);

            if (verification == null)
            {
                return(new BadRequestObjectResult("所提供的验证码不正确."));
            }

            if (verification.Code != model.VerificationCode)
            {
                return(new BadRequestObjectResult("验证码不正确."));
            }

            var user = await _userManager.FindByNameAsync(model.Mobile);

            if (user == null)
            {
                new BadRequestObjectResult("指定的用户不存在.");
            }

            var token = await _userManager.GeneratePasswordResetTokenAsync(user);

            var result = await _userManager.ResetPasswordAsync(user, token, model.NewPassword);

            if (result.Succeeded)
            {
                await _verificationProxy.SetVerificationUsed(verification);

                return(new OkResult());
            }
            else
            {
                return(new BadRequestObjectResult("重置密码失败."));
            }

            return(new OkResult());
        }
Exemplo n.º 4
0
        public bool Authenticate(string userName, string password, out AppUser appUser, string key = "", string authorizationCode = "")
        {
            appUser = null;

            if (key == "cook")
            {
                var user         = _dbContext.ApplicationUsers.FirstOrDefault(o => o.UserName == userName);
                var result       = _verificationProxy.GetVerification(BizCode.Login, userName).ConfigureAwait(false);
                var verification = result.GetAwaiter().GetResult();
                if (verification == null)
                {
                    return(false);
                }
                if (verification.Code != password)
                {
                    return(false);
                }

                if (user != null)
                {
                    appUser = new AppUser {
                        NickName = user.NickName, UserId = user.Id, PortraitUrl = user.PortraitUrl
                    };
                    return(true);
                }
                else
                {
                    var usr = new ApplicationUser {
                        UserName = userName, Email = ""
                    };
                    var pwd     = Guid.NewGuid().ToString().Substring(0, 8);
                    var cresult = _userManager.CreateAsync(usr, pwd).ConfigureAwait(false).GetAwaiter().GetResult();
                    if (cresult.Succeeded)
                    {
                        var ret     = _signInManager.PasswordSignInAsync(userName, pwd, true, false).ConfigureAwait(false);
                        var signRet = ret.GetAwaiter().GetResult();
                        return(signRet?.Succeeded ?? false);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            else if (key == "cookwechat")
            {
                var obj = _wechatProxy.GetAccessToken(_config.WeChatAppId, _config.WeChatAppSecret, authorizationCode, "authorization_code", out ErrorResponseModel res).ConfigureAwait(false);
                var ret = obj.GetAwaiter().GetResult();
                var ent = _dbContext.PartnerLogins.Add(new PartnerLogin
                {
                    CreatedBy         = ret.OpenId,
                    CreatedOn         = DateTime.Now,
                    UpdatedOn         = DateTime.Now,
                    Id                = Guid.NewGuid().ToString(),
                    UpdatedBy         = ret.OpenId,
                    AccessToken       = ret.AccessToken,
                    AuthorizationCode = authorizationCode,
                    ExpiredIn         = ret.ExpiresIn,
                    LoginChannel      = LoginChannel.Wechat,
                    OpenId            = ret.OpenId,
                    RefreshToken      = ret.RefreshToken,
                    Scope             = ret.Scope,
                    UnionId           = ret.UnionId
                });

                return(ent != null);
            }
            else
            {
                var appletUserSession = _dbContext.AppletUserSessions.FirstOrDefault(o => o.OpenId == userName && o.GooiosSessionKey == password);
                var appletUser        = appletUserSession == null ? null : _dbContext.AppletUsers.FirstOrDefault(o => o.OpenId == appletUserSession.OpenId);

                if (appletUser != null)
                {
                    appUser = new AppUser {
                        NickName = appletUser.NickName, PortraitUrl = appletUser.UserPortrait, UserId = appletUser.OpenId
                    };
                }

                var result  = _signInManager.PasswordSignInAsync(userName, password, true, false).ConfigureAwait(false);
                var signRet = result.GetAwaiter().GetResult();

                var user = _dbContext.ApplicationUsers.FirstOrDefault(o => o.UserName == userName);

                if (user != null)
                {
                    appUser = new AppUser {
                        NickName = user.NickName, UserId = user.Id, PortraitUrl = user.PortraitUrl
                    };
                }

                return(appletUserSession == null ? (signRet?.Succeeded ?? false) : true);
            }
        }