Beispiel #1
0
 private void InitBlankRow()
 {
     for (int i = 0; i < 5; i++)
     {
         _users.Add(new UserModel
         {
             User = new DataModel.Model.User
             {
                 UserType     = 0,
                 Enable       = true,
                 Login        = new Guid().ToString(),
                 PasswordHash = SaltedHash.Create("xislkfweorkdf").Hash,
                 PasswordSalt = SaltedHash.Create("xislkfweorkdf").Salt,
                 UserNo       =
                     (int.Parse(_users.Max(x => x.User.UserNo) ?? ResourcesHelper.CoustomUserNoStart) + 1)
                     .ToString(),
                 CreatedBy      = ResourcesHelper.CurrentUser.Name,
                 CreatedOn      = DateTime.Now,
                 LastModifiedBy = ResourcesHelper.CurrentUser.Name,
                 LastModifiedOn = DateTime.Now,
             },
             MemberCardNo = string.Empty
         });
     }
 }
Beispiel #2
0
        public LoginCommandValidator(IRepository repository)
        {
            _repository = repository;
            RuleFor(x => x.Username).NotNull().WithMessage("用户名不能为空");
            RuleFor(x => x.Password).NotNull().WithMessage("密码不能为空");

            Custom(x =>
            {
                var user =
                    _repository.Query <User>("SELECT * FROM [User] WHERE Username=@Username",
                                             new { x.Username })
                    .FirstOrDefault();

                if (user == null)
                {
                    return(new ValidationFailure("Username", "用户不存在"));
                }

                if (!user.IsEnabled)
                {
                    return(new ValidationFailure("Username", "用户已失效"));
                }

                if (!SaltedHash.Create(user.Salt, user.HashedPassword).Verify(x.Password))
                {
                    return(new ValidationFailure("Password", "用户名或密码有误"));
                }

                return(null);
            });
        }
 private void InitBlankRow()
 {
     for (int i = 0; i < 5; i++)
     {
         _memberCards.Add(
             new MemberCardModel
         {
             MemberCard = new DataModel.Model.MemberCard
             {
                 MemberType   = 0,
                 IsEnable     = true,
                 PasswordHash =
                     SaltedHash.Create(
                         ResourcesHelper.SystemSettings[
                             (short)DataType.SystemSettingCode.DefaultMemberCardPW]).Hash,
                 PasswordSalt =
                     SaltedHash.Create(
                         ResourcesHelper.SystemSettings[
                             (short)DataType.SystemSettingCode.DefaultMemberCardPW]).Salt,
                 MemberMoney           = 0,
                 TotalSurplusMoney     = 0,
                 PrincipalSurplusMoney = 0,
                 FavorableSurplusMoney = 0,
                 DispatchDate          = DateTime.Now,
                 CreatedBy             = ResourcesHelper.CurrentUser.Name,
                 CreatedOn             = DateTime.Now,
                 LastModifiedBy        = ResourcesHelper.CurrentUser.Name,
                 LastModifiedOn        = DateTime.Now,
                 MemberCardNo          = ResourcesHelper.MFTMemberCard
             },
             CanUpdate = true
         });
     }
 }
        private GameOperationResponse HandleLoginUser(int sessionId, LoginUser operation)
        {
            try
            {
                var userData = this.application.UserDatabase.Query <UserData>("UserData/ByUsername")
                               //.Customize(x => x.WaitForNonStaleResultsAsOfNow())
                               .Select(user => new { user.Username, user.Salt, user.Password })
                               .FirstOrDefault(user => user.Username.Equals(operation.Username, StringComparison.CurrentCultureIgnoreCase));
                if (userData == null)
                {
                    return(operation.GetErrorResponse((short)ResultCode.IncorrectUsernameOrPassword));
                }

                var passwordHash = SaltedHash.Create(userData.Salt, userData.Password);
                if (passwordHash.Verify(operation.Password) == false)
                {
                    return(operation.GetErrorResponse((short)ResultCode.IncorrectUsernameOrPassword));
                }

                // requesting master to authorize client
                this.peer.SendOperationRequest(new OperationRequest((byte)ServerOperationCode.AckClientUserLogin,
                                                                    new AckClientUserLogin
                {
                    SessionId = sessionId,
                    Username  = userData.Username
                }),
                                               new SendParameters());
                return(null);
            }
            catch (Exception e)
            {
                _logger.Error(e);
                return(operation.GetErrorResponse((short)ResultCode.Fail));
            }
        }
        public void Handle(ResetPasswordCommand command)
        {
            var        user       = _repository.Get <User>(command.UserId);
            SaltedHash saltedHash = SaltedHash.Create("123456");

            user.Salt           = saltedHash.Salt;
            user.HashedPassword = saltedHash.Hash;

            _repository.Update(user);
        }
Beispiel #6
0
        public User Authenticate(string userName, string password)
        {
            var user =
                _fetcher.Query <User>("SELECT * FROM [User] WHERE Username=@Username",
                                      new { userName })
                .FirstOrDefault();

            if (user != null && user.IsEnabled && SaltedHash.Create(user.Salt, user.HashedPassword).Verify(password))
            {
                return(user);
            }
            return(null);
        }
        private GameOperationResponse HandleCreateNewUser(int sessionId, CreateUser operation)
        {
            try
            {
                var username         = operation.Username.ToUpper();
                var existingUserData = this.application.UserDatabase.Query <UserData>("UserData/ByUsername")
                                       //.Customize(x => x.WaitForNonStaleResultsAsOfNow())
                                       .Select(user => new { user.Username })
                                       .FirstOrDefault(user => user.Username.Equals(operation.Username, StringComparison.CurrentCultureIgnoreCase));

                if (existingUserData != null)
                {
                    return(operation.GetErrorResponse((short)ResultCode.UsernameAlreadyExists));
                }

                ResultCode resultCode;
                if (LoginHelper.IsValidUsername(username, out resultCode) == false)
                {
                    return(operation.GetErrorResponse((short)resultCode));
                }

                if (LoginHelper.IsValidPassword(operation.Password, out resultCode) == false)
                {
                    return(operation.GetErrorResponse((short)resultCode));
                }

                var passwordHash = SaltedHash.Create(operation.Password);
                var newUserInfo  = new UserData
                {
                    Id        = UserData.GenerateId(username),
                    Username  = username,
                    Salt      = passwordHash.Salt,
                    Password  = passwordHash.Hash,
                    IsBanned  = false,
                    CreatedOn = DateTime.Now,
                    LastLogin = null,
                };

                this.application.UserDatabase.Store(newUserInfo);
                return(operation.GetErrorResponse((short)ResultCode.Ok));
            }
            catch (Exception e)
            {
                _logger.Error(e);
                return(operation.GetErrorResponse((short)ResultCode.Fail));
            }
        }
Beispiel #8
0
        public void Handle(CreateUserCommand command)
        {
            var user = command.MapToEntity <User>();

            user.Roles = new List <Role>();
            //foreach (var roleId in command.RoleIds)
            //{
            //    user.Roles.Add(_repository.Get<Role>(roleId));
            //}

            SaltedHash saltedHash = SaltedHash.Create(command.ConfirmPassword);

            user.Salt           = saltedHash.Salt;
            user.HashedPassword = saltedHash.Hash;
            user.LastLoggedIn   = DateTime.Now;
            _repository.Create(user);
        }
 private void TxtPassword_OnKeyDown(object sender, KeyEventArgs e)
 {
     if (e.Key == Key.Enter)
     {
         var memberCard = _memberCardRepository.Query()
                          .FirstOrDefault(x => x.MemberCardId == _memberCardId);
         if (memberCard != null &&
             SaltedHash.Create(memberCard.PasswordSalt, memberCard.PasswordHash).Verify(txtPassword.Password))
         {
             IsCheckOK = true;
             Close();
         }
         else
         {
             MessageBox.Show("密码不正确!", Properties.Resources.SystemName, MessageBoxButton.OK, MessageBoxImage.Error);
             txtPassword.Clear();
         }
     }
 }
Beispiel #10
0
        public void Handle(ChangePasswordCommand command)
        {
            var user = _repository.Get <User>(command.UserId);

            if (!SaltedHash.Create(user.Salt, user.HashedPassword).Verify(command.OldPassword))
            {
                throw new CommandValidationException("旧密码不正确");
            }
            if (command.Password != command.ConfirmPassword)
            {
                throw new CommandValidationException("两次密码输入不一致");
            }
            SaltedHash saltedHash = SaltedHash.Create(command.Password);

            user.Salt           = saltedHash.Salt;
            user.HashedPassword = saltedHash.Hash;

            _repository.Update(user);
        }
Beispiel #11
0
        private void LoginCheck()
        {
            string login    = TextLogin.Text;
            string password = TextPassword.Password;

            if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password))
            {
                return;
            }

            DataModel.Model.User user = _userRepository.Query().SingleOrDefault(x => x.Login == login);
            if (user != null && SaltedHash.Create(user.PasswordSalt, user.PasswordHash).Verify(password))
            {
                ResourcesHelper.CurrentUserRolePermission = new RolePermission((DataType.UserType)user.UserType);
                ResourcesHelper.SystemSettings            = _systemSettingRepository.Query()
                                                            .Where(x => x.IsEnable)
                                                            .ToList()
                                                            .ToDictionary(x => short.Parse(x.SettingCode), x => x.SettingValue);
                ResourcesHelper.CurrentUser = user;

                if (CheckBoxLogin.IsChecked.HasValue &&
                    CheckBoxLogin.IsChecked.Value)
                {
                    Settings.Default.Login = login;
                    Settings.Default.Save();
                }

                MainWindow mainWindow = new MainWindow();
                mainWindow.Show();
                Close();
            }
            else
            {
                MessageBox.Show("用户名和密码不正确!", Properties.Resources.SystemName, MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
        private void SaveUserWithMemberCard()
        {
            if (_memberCard != null)
            {
                DataModel.Model.User bindingUser = _userRepository.GetByUserId(_userId);

                if (_memberCard.RelateUserId.HasValue)
                {
                    try
                    {
                        if (!ComparePasswordEqual())
                        {
                            return;
                        }
                        SaltedHash saltedHash = SaltedHash.Create(txtFirstPassWord.Password);
                        _memberCard.PasswordHash = saltedHash.Hash;
                        _memberCard.PasswordSalt = saltedHash.Salt;

                        _memberCard.MemberCardlogs.Add(new DataModel.Model.MemberCardLog
                        {
                            ChangedBy   = ResourcesHelper.CurrentUser.Name,
                            DateChanged = DateTime.Now,
                            NewValue    = string.Format("会员: {0}与购物卡: {1}重新设置密码!", bindingUser.Name, _memberCard.MemberCardNo)
                        });

                        _memberCardRepository.Update(_memberCard);

                        _unitOfWork.Commit();

                        MessageBox.Show("密码设置成功!", Properties.Resources.SystemName,
                                        MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    catch (Exception ex)
                    {
                        Log4NetHelper.WriteLog(ex.ToString());

                        MessageBox.Show("密码设置失败!", Properties.Resources.SystemName,
                                        MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }
                else
                {
                    try
                    {
                        if (!ComparePasswordEqual())
                        {
                            return;
                        }
                        SaltedHash saltedHash = SaltedHash.Create(txtFirstPassWord.Password);
                        _memberCard.PasswordHash     = saltedHash.Hash;
                        _memberCard.PasswordSalt     = saltedHash.Salt;
                        _memberCard.DispatchUserId   = ResourcesHelper.CurrentUser.UserId;
                        _memberCard.RelateUserId     = _userId;
                        _memberCard.MemberCardStatus = (sbyte)DataType.MemberCardStatus.Active;

                        _memberCard.MemberCardlogs.Add(new DataModel.Model.MemberCardLog
                        {
                            ChangedBy      = ResourcesHelper.CurrentUser.Name,
                            DateChanged    = DateTime.Now,
                            PrincipalMoney = _memberCard.PrincipalSurplusMoney,
                            FavorableMoney = _memberCard.FavorableSurplusMoney,
                            LogType        = (sbyte)DataType.MemberCardLogType.Saved,
                            NewValue       = string.Format(ResourcesHelper.MemberCardLogUserFormat,
                                                           bindingUser.Name,
                                                           _memberCard.MemberCardNo,
                                                           _memberCard.PrincipalSurplusMoney.ToString("F2"))
                        });
                        _memberCardRepository.Update(_memberCard);

                        DataModel.Model.User user = _userRepository.GetByUserId(_userId);
                        user.CashTotal   = _memberCard.TotalSurplusMoney;
                        user.CashFee     = _memberCard.FavorableSurplusMoney;
                        user.CashBalance = _memberCard.PrincipalSurplusMoney;
                        _userRepository.Update(user);

                        _unitOfWork.Commit();

                        MessageBox.Show("购物卡绑定成功!", Properties.Resources.SystemName,
                                        MessageBoxButton.OK, MessageBoxImage.Information);
                    }
                    catch (Exception ex)
                    {
                        Log4NetHelper.WriteLog(ex.ToString());

                        MessageBox.Show("购物卡绑定失败!", Properties.Resources.SystemName,
                                        MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                }

                _user.ExecuteSearchText();
                Close();
            }
        }