fix von viel errors in GUI und logik dahinter
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user