email raus
This commit is contained in:
@@ -201,14 +201,14 @@ namespace Webshop.Api.SwaggerFilters
|
|||||||
["defaultBillingAddressId"] = new OpenApiNull()
|
["defaultBillingAddressId"] = new OpenApiNull()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
else if (type == typeof(UpdateCustomerDto)) // Dieses DTO verarbeitet jetzt alles
|
else if (type == typeof(UpdateCustomerDto))
|
||||||
{
|
{
|
||||||
schema.Example = new OpenApiObject
|
schema.Example = new OpenApiObject
|
||||||
{
|
{
|
||||||
["firstName"] = new OpenApiString("Max"),
|
["firstName"] = new OpenApiString("Max"),
|
||||||
["lastName"] = new OpenApiString("Mustermann"),
|
["lastName"] = new OpenApiString("Mustermann"),
|
||||||
["phoneNumber"] = new OpenApiString("+491701234567"),
|
["phoneNumber"] = new OpenApiString("+491701234567"),
|
||||||
["email"] = new OpenApiString($"max.mustermann.neu.{uniqueId}@example.com"),
|
// ["email"] = new OpenApiString($"max.mustermann.neu.{uniqueId}@example.com"), // << ENTFERNT >>
|
||||||
["currentPassword"] = new OpenApiString("SecureCustomerPass123!"),
|
["currentPassword"] = new OpenApiString("SecureCustomerPass123!"),
|
||||||
["defaultShippingAddressId"] = new OpenApiNull(),
|
["defaultShippingAddressId"] = new OpenApiNull(),
|
||||||
["defaultBillingAddressId"] = new OpenApiNull()
|
["defaultBillingAddressId"] = new OpenApiNull()
|
||||||
|
|||||||
@@ -16,10 +16,6 @@ namespace Webshop.Application.DTOs.Customers
|
|||||||
[Phone(ErrorMessage = "Ungültiges Telefonnummernformat.")]
|
[Phone(ErrorMessage = "Ungültiges Telefonnummernformat.")]
|
||||||
public string? PhoneNumber { get; set; } // Telefonnummer des Benutzers
|
public string? PhoneNumber { get; set; } // Telefonnummer des Benutzers
|
||||||
|
|
||||||
[EmailAddress(ErrorMessage = "Ungültiges E-Mail-Format.")]
|
|
||||||
public string? Email { get; set; } // E-Mail des Benutzers
|
|
||||||
|
|
||||||
// Optional, aber gute Sicherheitspraxis: Aktuelles Passwort zur Bestätigung sensibler Änderungen
|
|
||||||
[Required(ErrorMessage = "Aktuelles Passwort ist zur Bestätigung erforderlich.")]
|
[Required(ErrorMessage = "Aktuelles Passwort ist zur Bestätigung erforderlich.")]
|
||||||
public string CurrentPassword { get; set; } = string.Empty;
|
public string CurrentPassword { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ namespace Webshop.Application.Services.Customers
|
|||||||
var identityUser = await _userManager.FindByIdAsync(userId);
|
var identityUser = await _userManager.FindByIdAsync(userId);
|
||||||
if (identityUser == null) return (false, "Benutzerkonto nicht gefunden.");
|
if (identityUser == null) return (false, "Benutzerkonto nicht gefunden.");
|
||||||
|
|
||||||
// 1. Aktuelles Passwort prüfen
|
// 1. Aktuelles Passwort prüfen (Dies bleibt, da es eine gute Sicherheitspraxis für ALLE Profiländerungen ist)
|
||||||
if (!await _userManager.CheckPasswordAsync(identityUser, profileDto.CurrentPassword))
|
if (!await _userManager.CheckPasswordAsync(identityUser, profileDto.CurrentPassword))
|
||||||
{
|
{
|
||||||
return (false, "Falsches aktuelles Passwort zur Bestätigung.");
|
return (false, "Falsches aktuelles Passwort zur Bestätigung.");
|
||||||
@@ -91,26 +91,14 @@ namespace Webshop.Application.Services.Customers
|
|||||||
// 2. Felder der Customer-Entität aktualisieren (FirstName, LastName, DEFAULT ADDRESS IDs)
|
// 2. Felder der Customer-Entität aktualisieren (FirstName, LastName, DEFAULT ADDRESS IDs)
|
||||||
customer.FirstName = profileDto.FirstName;
|
customer.FirstName = profileDto.FirstName;
|
||||||
customer.LastName = profileDto.LastName;
|
customer.LastName = profileDto.LastName;
|
||||||
// << NEU: DEFAULT ADDRESS IDs aktualisieren >>
|
|
||||||
customer.DefaultShippingAddressId = profileDto.DefaultShippingAddressId;
|
customer.DefaultShippingAddressId = profileDto.DefaultShippingAddressId;
|
||||||
customer.DefaultBillingAddressId = profileDto.DefaultBillingAddressId;
|
customer.DefaultBillingAddressId = profileDto.DefaultBillingAddressId;
|
||||||
// -- ENDE NEU --
|
await _customerRepository.UpdateAsync(customer); // Speichert Änderungen im Customer-Profil
|
||||||
await _customerRepository.UpdateAsync(customer);
|
|
||||||
|
|
||||||
// 3. Felder des ApplicationUser (IdentityUser) aktualisieren (Email, PhoneNumber)
|
// 3. Telefonnummer im ApplicationUser aktualisieren (wenn anders und nicht leer)
|
||||||
|
// E-Mail-Logik wird HIER KOMPLETT ENTFERNT.
|
||||||
bool identityUserChanged = false;
|
bool identityUserChanged = false;
|
||||||
|
|
||||||
// E-Mail aktualisieren (wenn anders und nicht leer)
|
|
||||||
if (!string.IsNullOrEmpty(profileDto.Email) && identityUser.Email != profileDto.Email)
|
|
||||||
{
|
|
||||||
identityUser.Email = profileDto.Email;
|
|
||||||
identityUser.NormalizedEmail = _userManager.NormalizeEmail(profileDto.Email);
|
|
||||||
identityUser.UserName = profileDto.Email;
|
|
||||||
identityUser.NormalizedUserName = _userManager.NormalizeName(profileDto.Email);
|
|
||||||
identityUserChanged = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Telefonnummer aktualisieren (wenn anders und nicht leer)
|
|
||||||
if (!string.IsNullOrEmpty(profileDto.PhoneNumber) && identityUser.PhoneNumber != profileDto.PhoneNumber)
|
if (!string.IsNullOrEmpty(profileDto.PhoneNumber) && identityUser.PhoneNumber != profileDto.PhoneNumber)
|
||||||
{
|
{
|
||||||
identityUser.PhoneNumber = profileDto.PhoneNumber;
|
identityUser.PhoneNumber = profileDto.PhoneNumber;
|
||||||
@@ -123,11 +111,11 @@ namespace Webshop.Application.Services.Customers
|
|||||||
if (!updateResult.Succeeded)
|
if (!updateResult.Succeeded)
|
||||||
{
|
{
|
||||||
var errors = string.Join(" ", updateResult.Errors.Select(e => e.Description));
|
var errors = string.Join(" ", updateResult.Errors.Select(e => e.Description));
|
||||||
return (false, $"Fehler beim Aktualisieren der Kontaktdaten: {errors}");
|
return (false, $"Fehler beim Aktualisieren der Telefonnummer: {errors}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (true, "Profil und Kontaktdaten erfolgreich aktualisiert.");
|
return (true, "Profil und (optional) Telefonnummer erfolgreich aktualisiert.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<(bool Success, string ErrorMessage)> ChangeEmailAsync(string userId, string newEmail, string currentPassword)
|
public async Task<(bool Success, string ErrorMessage)> ChangeEmailAsync(string userId, string newEmail, string currentPassword)
|
||||||
|
|||||||
Reference in New Issue
Block a user