public async Task <CookAppPartnerLoginUserDto> VerifyCookAppPartnerLoginUserByAuthCode(string authCode) { var ret = await _wechatProxy.GetAccessToken(_config.WeChatAppId, _config.WeChatAppSecret, authCode, "authorization_code"); if (ret == null || ret.AccessToken == null) { return(null); } var partnerUser = _cookappPartnerLoginUserRepo.GetFiltered(o => o.PartnerKey == ret.OpenId).FirstOrDefault(); if (partnerUser == null) { partnerUser = CookAppPartnerLoginUserFactory.CreateInstance(authCode, ret.AccessToken, ret.ExpiresIn, ret.RefreshToken, ret.Scope, ret.UnionId, LoginChannel.Wechat, ret.OpenId); _cookappPartnerLoginUserRepo.Add(partnerUser); _dbUnitOfWork.Commit(); } return(MapperProvider.Mapper.Map <CookAppPartnerLoginUserDto>(partnerUser)); }
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); } }