Beispiel #1
0
 private void CheckConnection()
 {
     if (Connection == null)
     {
         Connection = NewConnection();
     }
 }
Beispiel #2
0
 private void btOkChanges_Click(object sender, RoutedEventArgs e)
 {
     if (new_pass.Password != new_pass1.Password)
     {
         MessageBox.Show(this, "Подтверждение нового пароля не совпадает с новым паролем!", "Зарплата предприятия", MessageBoxButton.OK, MessageBoxImage.Error);
     }
     else
     {
         // Делаем попытку создать соединение чтобы в дальнейшем использовать его для смены пароля
         Tuple <ConnectingResult, Exception> res = UniDbConnection.OpenCurrentConnection(UserName, Password);
         // Запускаем метод смены пароля
         Tuple <string, Exception> changePass = UniDbConnection.Current.ChangePassword(new_pass.Password, true);
         if (changePass.Item2 == null)
         {
             MessageBox.Show("Поздравляю! Пароль успешно изменен. Не сообщайте пароль третьим лицам. Вся ответственность за действия под вашим пользователем ложится на Вас",
                             "Изменение пароля",
                             MessageBoxButton.OK, MessageBoxImage.Information);
             Password = new_pass.Password;
             // Открываем соединение уже с новым паролем и закрываем форму авторизации
             btOk_Click(null, null);
             //UniDbConnection.OpenCurrentConnection(UserName, Password);
             //this.DialogResult = true;
             //Close();
         }
         else
         {
             MessageBox.Show(changePass.Item2.Message);
         }
     }
 }
Beispiel #3
0
        /// <summary>
        /// Попытка открытия текущего соединения
        /// </summary>
        /// <param name="userName">имя пользователя</param>
        /// <param name="password"> пароль</param>
        /// <returns>Возвращает пару Результат, Исключение. Если соединение открыто результат = Открыто, исключение не указано</returns>
        public static Tuple <ConnectingResult, Exception> OpenCurrentConnection(string userName, string password)
        {
            try
            {
                _current          = new UniDbConnection(userName, password);
                _current.UserID   = userName;
                _current.Password = password;
                _current.Open();
                return(new Tuple <ConnectingResult, Exception>(ConnectingResult.Open, null));
            }
            catch (Exception ex)
            {
                if (ex.GetType().Name == "OracleException")
                {
                    PropertyInfo prop = ex.GetType().GetProperty("Number");
                    if (prop != null)
                    {
                        int error_code = (int)ex.GetType().GetProperty("Number").GetValue(ex, null);
                        switch (error_code)
                        {
                        case 1017: return(new Tuple <ConnectingResult, Exception>(ConnectingResult.InvalidPassword, new Exception("Неверное имя пользователя или пароль", ex)));

                        case 28001: return(new Tuple <ConnectingResult, Exception>(ConnectingResult.PasswordExpired, new Exception("Срок действия пароля истек. Требуется изменить пароль", ex)));

                        case 28000: return(new Tuple <ConnectingResult, Exception>(ConnectingResult.AccountLock, new Exception("Пользователь заблокирован", ex)));

                        default: return(new Tuple <ConnectingResult, Exception>(ConnectingResult.OtherError, ex));
                        }
                    }
                }
                return(new Tuple <ConnectingResult, Exception>(ConnectingResult.OtherError, ex));
            }
        }
Beispiel #4
0
 /// <summary>
 /// Команда изменения пароля на новый.
 /// </summary>
 /// <param name="new_pass"></param>
 /// <param name="connect1"></param>
 private Exception ChangeOracleUserPassword(string new_pass, UniDbConnection connect1, bool isExpired)
 {
     try
     {
         if (isExpired)
         {
             MethodInfo mi = connect1.InternalConnection.GetType().GetMethod("OpenWithNewPassword");
             if (mi != null)
             {
                 mi.Invoke(connect1.InternalConnection, new object[] { new_pass });
             }
             else
             {
                 new UniDbCommand(string.Format("ALTER USER {0} IDENTIFIED BY \"{1}\"", UserID, new_pass), connect1).ExecuteNonQuery();
             }
         }
         else
         {
             new UniDbCommand(string.Format("ALTER USER {0} IDENTIFIED BY \"{1}\"", UserID, new_pass), connect1).ExecuteNonQuery();
         }
         return(null);
     }
     catch (Exception ex)
     {
         return(ex);
     }
 }
Beispiel #5
0
        public UniDbConnection NewConnection()
        {
            Tuple <ConnectingResult, Exception, UniDbConnection> res = UniDbConnection.OpenNew();

            if (res.Item2 == null)
            {
                return(res.Item3);
            }
            else
            {
                MessageBox.Show(res.Item2.Message);
                return(null);
            }
        }
Beispiel #6
0
        private void btOk_Click(object sender, RoutedEventArgs e)
        {
            Tuple <ConnectingResult, Exception> res = UniDbConnection.OpenCurrentConnection(UserName, Password);

            if (res.Item2 == null)
            {
                try
                {
                    File.WriteAllLines(System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) +
                                       $@"\{AppDomain.CurrentDomain.FriendlyName}Login.ini", new string[] { UserName.ToUpper() });
                }
                catch { };
                DialogResult = true;
                //this.Close();
            }
            else
            {
                MessageBox.Show(res.Item2.Message);
                if (res.Item1 == ConnectingResult.PasswordExpired)
                {
                    PasswordChangingState = true;
                }
            }
        }
Beispiel #7
0
 /// <summary>
 /// Конструктор команды
 /// </summary>
 /// <param name="commandText">текст Команды</param>
 /// <param name="connection">Соединение для команды</param>
 public UniDbCommand(string commandText, UniDbConnection connection) : this()
 {
     this.CommandText = commandText;
     this.Connection  = connection.InternalConnection;
 }
Beispiel #8
0
 /// <summary>
 /// Конструктор адаптера данных
 /// </summary>
 /// <param name="commandText">текст команды</param>
 /// <param name="connection"></param>
 public UniDbAdapter(string commandText, UniDbConnection connection) : this()
 {
     this.SelectCommand = new UniDbCommand(commandText, connection);
 }