Пример #1
0
 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;
 }
Пример #2
0
        /// <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);
        }