Example #1
0
        private void UpdateLogin(object parameter)
        {
            try
            {
                if (SelectedLogin == null)
                {
                    throw new Exception("Логин не выбран");
                }

                if (string.IsNullOrEmpty(Login.Trim()) || SelectedUser == null || SelectedGroup == null)
                {
                    throw new Exception("Не заполнены обязательные поля");
                }

                var passwordContainer = parameter as IPasswordContainer;

                if (!string.Equals(passwordContainer?.HashedPassword, Hasher.Hash(null)) &&
                    !string.Equals(passwordContainer?.HashedPassword, passwordContainer?.HashedElsePassword))
                {
                    throw new Exception("Пароли не совпадают");
                }

                using (var loginService = _ppsClientViewModel.ServiceProxy.GetPpsChannelFactory <ILoginService>())
                {
                    var channel      = loginService.CreateChannel();
                    var changedLogin = new LoginDataContract
                    {
                        LoginId  = SelectedLogin.LoginId,
                        Login    = Login.Trim(),
                        Password = SelectedLogin.Password,
                        GroupId  = SelectedGroup.GroupId,
                        UserId   = SelectedUser.UserId
                    };

                    if (!string.Equals(passwordContainer?.HashedPassword, Hasher.Hash(null)))
                    {
                        changedLogin.Password = passwordContainer?.HashedPassword;
                    }

                    var result = channel.UpdateLogin(SelectedLogin, changedLogin);

                    if (!result.BoolRes || !string.IsNullOrEmpty(result.ErrorRes))
                    {
                        throw new Exception(result.ErrorRes);
                    }

                    _ppsClientViewModel.UpdateLoginCollection();
                    _ppsClientViewModel.AddEvent(EventConstants.EVENT_UPD_LOGIN, SelectedLogin.Login);
                }
            }
            catch (Exception ex)
            {
                _ppsClientViewModel.WriteLogMessage(string.Concat("Не удалось изменить логин - ", ex.Message));
            }
        }
 private void SetPassword()
 {
     HashedPassword     = Hasher.Hash(PwdBox.SecurePassword);
     HashedElsePassword = Hasher.Hash(ElsePwdBox.SecurePassword);
 }
 private void BtnOk_Click(object sender, RoutedEventArgs e)
 {
     HashedPassword = Hasher.Hash(PwdBox.SecurePassword);
     PwdBox.Clear();
 }
        private void ApplyLogin(object parameter)
        {
            try
            {
                if (string.IsNullOrEmpty(UserId.Trim()))
                {
                    throw new Exception("Логин не задан");
                }

                var passwordContainer = parameter as IPasswordContainer;

                if (passwordContainer == null || string.Equals(passwordContainer.HashedPassword, Hasher.Hash(null)))
                {
                    throw new Exception("Пароль не задан");
                }

                using (var loginService = _ppsClientViewModel.ServiceProxy.GetPpsChannelFactory <ILoginService>())
                {
                    var channel  = loginService.CreateChannel();
                    var selected = channel.GetLogin(new LoginDataContract {
                        Login = UserId
                    });

                    if (!selected.BoolRes)
                    {
                        throw new Exception(selected.ErrorRes);
                    }

                    if (selected.SomeResult == null || !selected.SomeResult.Any())
                    {
                        throw new Exception("Логин не найден");
                    }

                    var user = selected.SomeResult.FirstOrDefault();

                    if (!string.Equals(passwordContainer.HashedPassword, user.Password))
                    {
                        throw new Exception("Не верный пароль");
                    }

                    if (!user.GroupName.ToLower().Contains("администратор"))
                    {
                        throw new Exception("Пользователь не администратор");
                    }

                    if (string.IsNullOrEmpty(user.Certificate))
                    {
                        throw new Exception("Пустой сертификат");
                    }

                    SerializeCertificate(user.Certificate);
                    string deviceSerial;
                    var    deviceId = GetCurrentMachineId(out deviceSerial);
                    RaiseOnLoginApplied(user.LoginId, deviceId, deviceSerial, user.Login, user.UserName);
                    _ppsClientViewModel.AddEvent(EventConstants.EVENT_LOGON, user.UserName);
                    LoginNotApplied = false;
                }
            }
            catch (Exception ex)
            {
                StatusMessage = ex.Message;
                _ppsClientViewModel.AddEvent(EventConstants.EVENT_ERROR, string.Concat("Ошибка входа. ", ex.Message));
            }
        }