public UserManager(IUserStore userStore, IScoreInfoStore scoreInfoStore, HelperAuthentication tokenHelper, ITransaction <PointsGameDbContext> transaction, AllocateManager allocateManager, HellperPush hellperEmail, HelperSendClientMessage sendClientMessageManager) { _userStore = userStore ?? throw new ArgumentNullException(nameof(userStore)); _scoreInfoStore = scoreInfoStore ?? throw new ArgumentNullException(nameof(scoreInfoStore)); helperAuthentication = tokenHelper ?? throw new ArgumentNullException(nameof(tokenHelper)); _transaction = transaction ?? throw new ArgumentNullException(nameof(transaction)); _allocateManager = allocateManager; _hellperEmail = hellperEmail; _sendClientMessageManager = sendClientMessageManager; }
/// <summary> /// 登陆(获取Token)-自动绑定认证中心UserId /// </summary> /// <returns></returns> public async Task <ResponseMessage <IActionResult> > SignIn(SignRequest request, CancellationToken cancellationToken = default(CancellationToken)) { var response = new ResponseMessage <IActionResult>(); var localUser = await _userStore.GetUserInfos().FirstOrDefaultAsync(a => a.LoginName.Equals(request.LoginName), cancellationToken); if (localUser == null) { response.Code = ResponseCodeDefines.ModelStateInvalid; response.Message = "用户不存在,请联系管理员添加用户"; return(response); } var token = await helperAuthentication.GetUserTokenObject(request); if (!token.HasValues) { response.Code = ResponseCodeDefines.ModelStateInvalid; response.Message = "用户名或密码错误"; return(response); } if (token["error"] != null) { response.Code = ResponseCodeDefines.ModelStateInvalid; response.Message = token["error"].ToString(); return(response); } var userId = HelperAuthentication.GetUserId(token["access_token"].ToString()); localUser.UserId = userId; //登录日志 var signLog = new UserSignLog { Id = Guid.NewGuid().ToString(), LoginName = localUser.LoginName, Platform = 0, // TODO header里面传 SigninTime = DateTime.Now, LocalUserId = localUser.Id, UserId = userId, UserName = localUser.UserName, }; localUser.Email = await helperAuthentication.GetUserEmail(userId, token["access_token"].ToString()); //事务保存数据 using (var trans = await _transaction.BeginTransaction()) { try { await _userStore.Create(new List <UserSignLog> { signLog }, cancellationToken); await _userStore.Update(new List <UserInfo> { localUser }, cancellationToken); trans.Commit(); } catch (Exception e) { trans.Rollback(); throw e; } } // [王森-191008-添加是否为管理员字段] token.Add("isAdmin", localUser.IsAdmin); response.Extension = new JsonResult(token); //try //{ // await EasterEgg(localUser.Id); //} //catch (Exception e) //{ // Logger.Error($"彩蛋触发失败:{e.Message}\r\n{e.StackTrace}"); //} return(response); }