Exemplo n.º 1
0
        public async Task <LogOnResponse> LogOn(LogOnRequest request)
        {
            var response = new LogOnResponse();

            var user = await _userRepository.Select(x => x.Email == request.Email);

            if (user.IsNotExist() ||
                !user.IsActive)
            {
                response.ErrorMessages.Add("user_not_found_or_not_active");
                response.Status = ResponseStatus.Invalid;
                return(response);
            }

            if (_cryptoHelper.Hash(request.Password, user.ObfuscationSalt) == user.PasswordHash)
            {
                if (user.LoginTryCount < 6 ||
                    user.LastLoginTryAt.HasValue && user.LastLoginTryAt.Value.AddHours(1) < DateTime.UtcNow)
                {
                    user.LastLoginAt   = DateTime.UtcNow;
                    user.LoginTryCount = 0;

                    var loginLog  = _userLoginLogFactory.CreateEntityFromRequest(request, user);
                    var uowResult = await _logOnUnitOfWork.DoWork(user, loginLog);

                    if (uowResult)
                    {
                        _cacheManager.UpsertUserCache(user, _userFactory.MapCurrentUser(user));

                        response.Status = ResponseStatus.Success;
                        response.Item.OrganizationUid = user.OrganizationUid;
                        response.Item.Name            = user.Name;
                        response.Item.Email           = user.Email;
                        return(response);
                    }
                }
            }

            user.LastLoginAt    = null;
            user.LastLoginTryAt = DateTime.UtcNow;
            user.LoginTryCount++;

            await _userRepository.Update(user.Id, user);

            response.ErrorMessages.Add("password_invalid");
            response.Status = ResponseStatus.Failed;
            return(response);
        }
Exemplo n.º 2
0
        private void LogOnEventHandle(LogOnResponse response)
        {
            try
            {
                if (response != null)
                {
                    switch (response.code)
                    {
                    case 0:
                    {
                        LogonWindow logonWindow = this.dataService.LoginWindow as LogonWindow;
                        if (logonWindow != null)
                        {
                            logonWindow.LogonPanel.LogonButtonEnable();
                        }
                        this.logOnMsg.Message = "验证失败,用户名不存在!";
                        this.connection.Disconnect();
                        break;
                    }

                    case 1:
                        this.logOnMsg.Message = "验证成功,正在获取数据...";
                        this.InitUserInfo(response);
                        this.dataService.ServerInfo.AESKey = System.Convert.FromBase64String(response.key);
                        this.EnterINWindow();
                        break;

                    case 2:
                    {
                        LogonWindow logonWindow2 = this.dataService.LoginWindow as LogonWindow;
                        if (logonWindow2 != null)
                        {
                            logonWindow2.LogonPanel.LogonButtonEnable();
                        }
                        this.logOnMsg.Message = "验证失败,密码错误!";
                        this.connection.Disconnect();
                        break;
                    }
                    }
                }
            }
            catch (System.Exception e)
            {
                this.logger.Error(e.ToString());
            }
        }
Exemplo n.º 3
0
 private void InitUserInfo(LogOnResponse response)
 {
     if (response != null)
     {
         this.sessionService.DepartmentId    = response.department_id;
         this.sessionService.Uid             = response.uid;
         this.sessionService.Jid             = response.jid;
         this.sessionService.Name            = response.name;
         this.sessionService.NickName        = response.nickname;
         this.sessionService.Actor           = response.level;
         this.sessionService.ServerTimeStamp = response.serverTimeStamp;
         this.sessionService.HeaderFileName  = response.img;
         this.sessionService.Sex             = (Sex)System.Enum.Parse(typeof(Sex), response.sex.ToString());
         this.sessionService.Signature       = response.signature;
         this.sessionService.Status          = (UserStatus)System.Enum.Parse(typeof(UserStatus), response.status.ToString());
         Logger.Jid = response.jid;
     }
 }
 private void LogOnEventHandle(LogOnResponse response)
 {
     try
     {
         if (response != null)
         {
             switch (response.code)
             {
             case 0:
             {
                 LogonWindow logonWindow = this.dataService.LoginWindow as LogonWindow;
                 if (logonWindow != null)
                 {
                     logonWindow.LogonPanel.LogonButtonEnable();
                 }
                 this.logOnMsg.Message = "验证失败,用户名不存在!";
                 this.connection.Disconnect();
                 break;
             }
             case 1:
                 this.logOnMsg.Message = "验证成功,正在获取数据...";
                 this.InitUserInfo(response);
                 this.dataService.ServerInfo.AESKey = System.Convert.FromBase64String(response.key);
                 this.EnterINWindow();
                 break;
             case 2:
             {
                 LogonWindow logonWindow2 = this.dataService.LoginWindow as LogonWindow;
                 if (logonWindow2 != null)
                 {
                     logonWindow2.LogonPanel.LogonButtonEnable();
                 }
                 this.logOnMsg.Message = "验证失败,密码错误!";
                 this.connection.Disconnect();
                 break;
             }
             }
         }
     }
     catch (System.Exception e)
     {
         this.logger.Error(e.ToString());
     }
 }
 private void InitUserInfo(LogOnResponse response)
 {
     if (response != null)
     {
         this.sessionService.DepartmentId = response.department_id;
         this.sessionService.Uid = response.uid;
         this.sessionService.Jid = response.jid;
         this.sessionService.Name = response.name;
         this.sessionService.NickName = response.nickname;
         this.sessionService.Actor = response.level;
         this.sessionService.ServerTimeStamp = response.serverTimeStamp;
         this.sessionService.HeaderFileName = response.img;
         this.sessionService.Sex = (Sex)System.Enum.Parse(typeof(Sex), response.sex.ToString());
         this.sessionService.Signature = response.signature;
         this.sessionService.Status = (UserStatus)System.Enum.Parse(typeof(UserStatus), response.status.ToString());
         Logger.Jid = response.jid;
     }
 }