private void CheckConnection() { if (Connection == null) { Connection = NewConnection(); } }
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); } } }
/// <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)); } }
/// <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); } }
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); } }
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; } } }
/// <summary> /// Конструктор команды /// </summary> /// <param name="commandText">текст Команды</param> /// <param name="connection">Соединение для команды</param> public UniDbCommand(string commandText, UniDbConnection connection) : this() { this.CommandText = commandText; this.Connection = connection.InternalConnection; }
/// <summary> /// Конструктор адаптера данных /// </summary> /// <param name="commandText">текст команды</param> /// <param name="connection"></param> public UniDbAdapter(string commandText, UniDbConnection connection) : this() { this.SelectCommand = new UniDbCommand(commandText, connection); }