using System; using System.Collections.Generic; using System.Data.Entity.Validation; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace SneakersSkakunov { /// /// Логика взаимодействия для Registration.xaml /// public partial class Registration : Page { public Registration() { InitializeComponent(); } private void GoAuth_Click(object sender, RoutedEventArgs e) { MainFrame.mframe.Navigate(new Authorization()); } private void Reg_Click(object sender, RoutedEventArgs e) { if (EmptyCheck(Surname.Text, Name.Text, Patronymic.Text, BirthDate.Text)) { MessageBox.Show("Нужно заполнить поля ФИО и даты рождения"); return; } if (LogCheck(Login.Text) == false) { MessageBox.Show("Такой логин уже существует"); return; } string CurPass = Pass.Password; if (PassCheck(CurPass) == false) { MessageBox.Show("В пароле должно быть: не менее 1 заглавного латинского символа, не менее 3 строчных латинских символов, не менее 2 цифры и не менее 1 спец. символа. Общая длина пароля не менее 8 символов"); return; } using (SHA256 hash = SHA256.Create()) { CurPass = BitConverter.ToString(hash.ComputeHash(Encoding.UTF8.GetBytes(CurPass))).Replace("-", ""); } int gen; if (Male.IsChecked == true) { gen = 1; } else { gen = 2; } Users user = new Users() { Name = Name.Text, Surname = Surname.Text, Patronymic = Patronymic.Text, Login = Login.Text, Password = CurPass, DateBirth = BirthDate.SelectedDate, id_Gender = gen, id_Role = 2 }; try { App.Entities.Users.Add(user); App.Entities.SaveChanges(); } catch (DbEntityValidationException ex) { foreach (DbEntityValidationResult validationError in ex.EntityValidationErrors) { MessageBox.Show("Object: " + validationError.Entry.Entity.ToString()); foreach (DbValidationError err in validationError.ValidationErrors) { MessageBox.Show(err.ErrorMessage + ""); } } } MessageBox.Show("Регистрация прошла успешно"); } public bool PassCheck(string Pass) { Regex check = new Regex("(?=.*[A-Z])(?=.*[a-z]){3,}(?=.*[0-9]){2,}(?=.*[_])[A-Za-z0-9_]{8,}"); if (check.IsMatch(Pass) == true) { return true; } else { return false; } } public bool LogCheck(string Log) { using (Sniker DB = new Sniker()) { foreach (Users user in DB.Users) { if (Log == user.Login) { return false; } } return true; } } public bool EmptyCheck(string Sur, string Nam, string Pat, string BirthDate) { if (Sur == null || Nam == null || Pat == null || BirthDate == null) { return false; } else { return true; } } } }