Authorization.xaml.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using MySql.Data.MySqlClient; // Используем класс MySQL для подключения в БД
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows;
  8. using System.Windows.Controls;
  9. using System.Windows.Data;
  10. using System.Windows.Documents;
  11. using System.Windows.Input;
  12. using System.Windows.Media;
  13. using System.Windows.Media.Imaging;
  14. using System.Windows.Shapes;
  15. namespace Hammer_store
  16. {
  17. /// <summary>
  18. /// Логика взаимодействия для Authorization.xaml
  19. /// </summary>
  20. ///
  21. public partial class Authorization : Window
  22. {
  23. internal bool[] successField = new bool[2] { false, false };
  24. internal Authorization()
  25. {
  26. InitializeComponent();
  27. }
  28. /* Событие-нажатие левой кнопки мыши: Перетаскивание окна */
  29. private void TitleBar_MouseDown(object sender, MouseButtonEventArgs e)
  30. {
  31. if (e.ChangedButton == MouseButton.Left)
  32. this.DragMove();
  33. }
  34. /* Событие-нажатие по крестику: Закрытие окна */
  35. private void Image_cross_MouseDown(object sender, MouseButtonEventArgs e)
  36. {
  37. Application exit = Application.Current;
  38. exit.Shutdown();
  39. }
  40. /* Событие-нажатие по картинке свернуть: Сворачивание окна */
  41. private void Image_colapso_MouseDown(object sender, MouseButtonEventArgs e)
  42. {
  43. this.WindowState = WindowState.Minimized;
  44. }
  45. /* Событие-потеря фокуса: Поле логина */
  46. private void textBox_login_LostFocus(object sender, RoutedEventArgs e)
  47. {
  48. string loginLine = textBox_InputLogin.Text; //Присваивание введенной строки
  49. short existSymbol = 0; //Флажок для существования спец. символа
  50. if (loginLine != "")
  51. {
  52. //Проверка на существование числа
  53. if (Char.IsDigit(loginLine[0]))
  54. {
  55. existSymbol = 2; //Присваиваем 2, чтобы появился полигон при проверке на спец. символ
  56. textBox_InputLogin.BorderBrush = Brushes.Red;
  57. ErrorMessagePolygon_Login.Visibility = Visibility.Visible;
  58. labelErrorMessageOne_Login.Visibility = Visibility.Visible;
  59. }
  60. else
  61. {
  62. ErrorMessagePolygon_Login.Visibility = Visibility.Hidden;
  63. labelErrorMessageOne_Login.Visibility = Visibility.Hidden;
  64. };
  65. //Массив спец. символов
  66. char[] arraySymbols = {'!', '@', '#', '$', '%', '^', '&', '*', '(',
  67. ')', '-', '+', '=', '/', '|', '\\', '{', '}',
  68. '[', ']', ';', ':', '"', '\'', ',', '.', '<',
  69. '>', '?'};
  70. //Проверка на существование спец. символа в начале
  71. for (int i = 0; i < arraySymbols.Length; i++)
  72. {
  73. if (loginLine[0] == arraySymbols[i])
  74. existSymbol = 1;
  75. }
  76. if (existSymbol == 1)
  77. {
  78. textBox_InputLogin.BorderBrush = Brushes.Red;
  79. ErrorMessagePolygon_Login.Visibility = Visibility.Visible;
  80. labelErrorMessageTwo_Login.Visibility = Visibility.Visible;
  81. }
  82. else if
  83. (existSymbol == 0)
  84. {
  85. ErrorMessagePolygon_Login.Visibility = Visibility.Hidden;
  86. labelErrorMessageTwo_Login.Visibility = Visibility.Hidden;
  87. }
  88. if (loginLine.Length <= 3)
  89. {
  90. textBox_InputLogin.BorderBrush = Brushes.Red;
  91. ErrorMessagePolygon_Login.Visibility = Visibility.Visible;
  92. labelErrorMessageFour_Login.Visibility = Visibility.Visible;
  93. }
  94. if (loginLine.Contains(" ") & existSymbol == 0)
  95. {
  96. textBox_InputLogin.BorderBrush = Brushes.Red;
  97. ErrorMessagePolygon_Login.Visibility = Visibility.Visible;
  98. labelErrorMessageFive_Login.Visibility = Visibility.Visible;
  99. }
  100. //Проверка на верное поле
  101. if (textBox_InputLogin.BorderBrush == Brushes.LimeGreen) successField[0] = true;
  102. else successField[0] = false;
  103. }
  104. }
  105. /* Событие-получение фокуса: Поле логина */
  106. private void textBox_login_GotFocus(object sender, RoutedEventArgs e)
  107. {
  108. textBox_InputLogin.BorderBrush = null;
  109. ErrorMessagePolygon_Login.Visibility = Visibility.Hidden;
  110. labelErrorMessageOne_Login.Visibility = Visibility.Hidden;
  111. labelErrorMessageTwo_Login.Visibility = Visibility.Hidden;
  112. labelErrorMessageThree_Login.Visibility = Visibility.Hidden;
  113. labelErrorMessageFour_Login.Visibility = Visibility.Hidden;
  114. labelErrorMessageFive_Login.Visibility = Visibility.Hidden;
  115. }
  116. /* Событие-потеря фокуса: Поле пароля */
  117. private void passwordBox_pass_LostFocus(object sender, RoutedEventArgs e)
  118. {
  119. string passLine1 = passwordBox_pass.Password;
  120. if (passLine1 != "")
  121. {
  122. //Проверка на содержание более 7 символов и отсутствие символов киррилицы
  123. var cyrillic = Enumerable.Range(1024, 256).Select(ch => (char)ch);
  124. bool res = passLine1.Any(cyrillic.Contains);
  125. if (res == true)
  126. {
  127. passwordBox_pass.BorderBrush = Brushes.Red;
  128. labelErrorMessageOne_Pass1.Visibility = Visibility.Visible;
  129. ErrorMessagePolygon_Pass1.Visibility = Visibility.Visible;
  130. }
  131. else if (res == false & passLine1.Length >= 7)
  132. {
  133. passwordBox_pass.BorderBrush = Brushes.LimeGreen;
  134. labelErrorMessageOne_Pass1.Visibility = Visibility.Hidden;
  135. ErrorMessagePolygon_Pass1.Visibility = Visibility.Hidden;
  136. }
  137. else if (res == false & passLine1.Length < 7)
  138. {
  139. passwordBox_pass.BorderBrush = Brushes.Red;
  140. labelErrorMessageTwo_Pass1.Visibility = Visibility.Visible;
  141. ErrorMessagePolygon_Pass1.Visibility = Visibility.Visible;
  142. }
  143. //Проверка на пробелы
  144. if (passLine1.Contains(" "))
  145. {
  146. passwordBox_pass.BorderBrush = Brushes.Red;
  147. labelErrorMessageThree_Pass1.Visibility = Visibility.Visible;
  148. ErrorMessagePolygon_Pass1.Visibility = Visibility.Visible;
  149. }
  150. }
  151. if (passwordBox_pass.BorderBrush == Brushes.LimeGreen) successField[1] = true;
  152. else successField[1] = false;
  153. }
  154. /* Событие-получение фокуса: Поле пароля */
  155. private void passwordBox_pass_GotFocus(object sender, RoutedEventArgs e)
  156. {
  157. passwordBox_pass.BorderBrush = null;
  158. ErrorMessagePolygon_Pass1.Visibility = Visibility.Hidden;
  159. labelErrorMessageOne_Pass1.Visibility = Visibility.Hidden;
  160. labelErrorMessageTwo_Pass1.Visibility = Visibility.Hidden;
  161. labelErrorMessageThree_Pass1.Visibility = Visibility.Hidden;
  162. }
  163. /* Событие-нажатие по глазу: Скрытие пароля */
  164. private void Image_EyeHide1_MouseDown(object sender, MouseButtonEventArgs e)
  165. {
  166. textBox_OutputPass.Text = passwordBox_pass.Password;
  167. textBox_OutputPass.Visibility = Visibility.Visible;
  168. passwordBox_pass.Visibility = Visibility.Hidden;
  169. Image_EyeHide1.Visibility = Visibility.Hidden;
  170. Image_EyeVisible1.Visibility = Visibility.Visible;
  171. }
  172. /* Событие-нажатие по глазу: Отображение пароля */
  173. private void Image_EyeVisible1_MouseDown(object sender, MouseButtonEventArgs e)
  174. {
  175. passwordBox_pass.Password = textBox_OutputPass.Text;
  176. textBox_OutputPass.Visibility = Visibility.Hidden;
  177. Image_EyeVisible1.Visibility = Visibility.Hidden;
  178. passwordBox_pass.Visibility = Visibility.Visible;
  179. Image_EyeHide1.Visibility = Visibility.Visible;
  180. }
  181. /* Событие-кнопка: Вход в аккаунт */
  182. internal void button_signIn_Click(object sender, RoutedEventArgs e)
  183. {
  184. DB db = new DB();
  185. System.Data.DataTable table = new System.Data.DataTable();
  186. MySqlDataAdapter adapter = new MySqlDataAdapter();
  187. //Передача объекту запрос с введенным в TextBox`ы пароль и логин
  188. MySqlCommand command = new MySqlCommand("SELECT * FROM `Users` WHERE `login` = @login AND `pass` = @pass", db.getConnection());
  189. command.Parameters.Add("@login", MySqlDbType.VarChar).Value = textBox_InputLogin.Text; //Передача логина
  190. command.Parameters.Add("@pass", MySqlDbType.VarChar).Value = passwordBox_pass.Password; //Передача пароля
  191. //Передача объекта с запросом к СУБД
  192. adapter.SelectCommand = command;
  193. //Заполнение таблицы данными
  194. adapter.Fill(table);
  195. //Проверка есть ли в базе пользователь + блокировка открытия формы
  196. if (table.Rows.Count > 0)
  197. {
  198. MessageBox.Show("Вход выполнен");
  199. MainWindow showMainWindow = new MainWindow();
  200. showMainWindow.Show(); //Отображаем MainWindow
  201. this.Hide(); //Скрываем Authorization
  202. }
  203. else MessageBox.Show("Вход не выполнен");
  204. }
  205. /* Событие-кнопка: Вернуться в окно UserVerification */
  206. internal void button_backOnUserVerification_Click(object sender, RoutedEventArgs e)
  207. {
  208. Begin_UserVerification begin_UserVerification = new Begin_UserVerification();
  209. begin_UserVerification.Show();
  210. this.Hide();
  211. }
  212. }
  213. }