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()}")); } }
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)); } }
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()); }
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); } }