diff --git a/SkyTeam/AdminDashBoard.xaml b/SkyTeam/AdminDashBoard.xaml index e194db2..f38f63f 100644 --- a/SkyTeam/AdminDashBoard.xaml +++ b/SkyTeam/AdminDashBoard.xaml @@ -105,6 +105,7 @@ + - - + - - - - - + - - + + - - + + - - + + - + @@ -153,63 +80,27 @@ - + - - - + + + - + - - - + + + - - @@ -217,6 +108,5 @@ - - + \ No newline at end of file diff --git a/SkyTeam/PilotenRepo.cs b/SkyTeam/PilotenRepo.cs deleted file mode 100644 index 5fab9dd..0000000 --- a/SkyTeam/PilotenRepo.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace SkyTeam -{ - class PilotenRepo - { - } -} diff --git a/SkyTeam/Regestrieren.xaml.cs b/SkyTeam/Regestrieren.xaml.cs index d5581bf..7c0c0a8 100644 --- a/SkyTeam/Regestrieren.xaml.cs +++ b/SkyTeam/Regestrieren.xaml.cs @@ -1,8 +1,9 @@ using System; using System.Windows; using System.Windows.Controls; +using System.Text.RegularExpressions; using MySql.Data.MySqlClient; -using BCrypt.Net; +using BCrypt.Net; namespace SkyTeam { @@ -15,33 +16,54 @@ namespace SkyTeam private void RegisterButton_Click(object sender, RoutedEventArgs e) { - if (string.IsNullOrEmpty(PasswordBox.Password)) + if (string.IsNullOrWhiteSpace(EmailTextBox.Text) || string.IsNullOrWhiteSpace(PasswordBox.Password)) { - MessageBox.Show("Bitte geben Sie ein Passwort ein."); + MessageBox.Show("Bitte geben Sie Email und Passwort ein."); return; } - string hashedPassword = BCrypt.Net.BCrypt.HashPassword(PasswordBox.Password); + if (!IsValidEmail(EmailTextBox.Text)) + { + MessageBox.Show("Bitte geben Sie eine gültige E-Mail-Adresse ein (z.B. name@domain.com)."); + return; + } - string query = "INSERT INTO users (Vorname, Nachname, Email, PasswortHash, Rolle, Stadt, Anrede, Geburtsdatum) " + - "VALUES (@vorname, @nachname, @email, @password, 'User', @stadt, @anrede, @geburtsdatum)"; + string emailToCheck = EmailTextBox.Text; try { using (MySqlConnection conn = new MySqlConnection(DatenbankServices.GetConnection())) { conn.Open(); - using (MySqlCommand cmd = new MySqlCommand(query, conn)) + + string checkQuery = "SELECT COUNT(*) FROM users WHERE Email = @email"; + using (MySqlCommand checkCmd = new MySqlCommand(checkQuery, conn)) + { + checkCmd.Parameters.AddWithValue("@email", emailToCheck); + long userCount = (long)checkCmd.ExecuteScalar(); + + if (userCount > 0) + { + MessageBox.Show("Sie haben bereits ein Konto mit dieser E-Mail. Bitte löschen Sie es, bevor Sie ein neues erstellen.", + "Konto existiert bereits", MessageBoxButton.OK, MessageBoxImage.Error); + return; + } + } + + string hashedPassword = BCrypt.Net.BCrypt.HashPassword(PasswordBox.Password); + string insertQuery = "INSERT INTO users (Vorname, Nachname, Email, PasswortHash, Rolle, Stadt, Anrede, Geburtsdatum) " + + "VALUES (@vorname, @nachname, @email, @password, 'User', @stadt, @anrede, @geburtsdatum)"; + + using (MySqlCommand cmd = new MySqlCommand(insertQuery, conn)) { string selectedAnrede = (SalutationComboBox.SelectedItem as ComboBoxItem)?.Content.ToString(); DateTime? selectedDate = BirthDatePicker.SelectedDate; cmd.Parameters.AddWithValue("@vorname", FirstNameTextBox.Text); cmd.Parameters.AddWithValue("@nachname", LastNameTextBox.Text); - cmd.Parameters.AddWithValue("@email", EmailTextBox.Text); + cmd.Parameters.AddWithValue("@email", emailToCheck); cmd.Parameters.AddWithValue("@password", hashedPassword); cmd.Parameters.AddWithValue("@stadt", CityTextBox.Text); - cmd.Parameters.AddWithValue("@anrede", selectedAnrede ?? (object)DBNull.Value); cmd.Parameters.AddWithValue("@geburtsdatum", selectedDate.HasValue ? selectedDate.Value : (object)DBNull.Value); @@ -69,5 +91,22 @@ namespace SkyTeam mainWindow.MainFrame.Navigate(new LogInPage()); } } + + private bool IsValidEmail(string email) + { + if (string.IsNullOrWhiteSpace(email)) + return false; + + try + { + return Regex.IsMatch(email, + @"^[^@\s]+@[^@\s]+\.[^@\s]+$", + RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(250)); + } + catch (RegexMatchTimeoutException) + { + return false; + } + } } } \ No newline at end of file diff --git a/SkyTeam/SettingsPage.xaml b/SkyTeam/SettingsPage.xaml index 52206fa..b5cfde8 100644 --- a/SkyTeam/SettingsPage.xaml +++ b/SkyTeam/SettingsPage.xaml @@ -26,6 +26,7 @@ +