Merge pull request 'Profilbearbeitung: Reviewnacharbeitung' (#22) from Profilbearbeitung into dev
Reviewed-on: #22
This commit was merged in pull request #22.
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
<?php
|
||||
|
||||
require_once "php/model/LocalUserDAO.php";
|
||||
require_once 'php/model/Article.php';
|
||||
require_once 'php/model/ArticleManager.php';
|
||||
require_once "php/model/Article.php";
|
||||
require_once "php/model/ArticleManager.php";
|
||||
require_once "php/validator/user-validator.php";
|
||||
|
||||
$error = null;
|
||||
|
||||
@@ -11,34 +12,6 @@ if (!isset($_SESSION["user"])) {
|
||||
exit();
|
||||
}
|
||||
|
||||
/*
|
||||
* Prüft Vor- und Nachnamen.
|
||||
* Erlaubt sind Buchstaben, Umlaute, Leerzeichen und Bindestriche.
|
||||
*/
|
||||
function isValidName($name): bool {
|
||||
return preg_match("/^[a-zA-ZäöüÄÖÜß -]{2,50}$/", $name);
|
||||
}
|
||||
|
||||
/*
|
||||
* Prüft, ob die E-Mail-Adresse ein gültiges Format hat.
|
||||
*/
|
||||
function isValidEmailAddress($email): bool {
|
||||
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false
|
||||
&& strlen($email) <= 100;
|
||||
}
|
||||
|
||||
/*
|
||||
* Prüft das neue Passwort.
|
||||
* Leeres Passwort ist erlaubt, wenn der Nutzer es nicht ändern möchte.
|
||||
*/
|
||||
function isValidProfilePassword($password): bool {
|
||||
if ($password === "") {
|
||||
return true;
|
||||
}
|
||||
|
||||
return strlen($password) >= 8 && strlen($password) <= 72;
|
||||
}
|
||||
|
||||
try {
|
||||
$dao = new LocalUserDAO();
|
||||
|
||||
@@ -60,37 +33,40 @@ try {
|
||||
$nachname = trim($_POST["nachname"] ?? "");
|
||||
$password = $_POST["password"] ?? "";
|
||||
|
||||
if (!isValidName($vorname)) {
|
||||
$error = "Der Vorname darf nur Buchstaben, Leerzeichen und Bindestriche enthalten und muss 2 bis 50 Zeichen lang sein.";
|
||||
} elseif (!isValidName($nachname)) {
|
||||
$error = "Der Nachname darf nur Buchstaben, Leerzeichen und Bindestriche enthalten und muss 2 bis 50 Zeichen lang sein.";
|
||||
} elseif (!isValidEmailAddress($newEmail)) {
|
||||
if (!userEmailValidator($newEmail)) {
|
||||
$error = "Bitte gib eine gültige E-Mail-Adresse ein.";
|
||||
} elseif (!isValidProfilePassword($password)) {
|
||||
$error = "Das Passwort muss mindestens 8 Zeichen lang sein.";
|
||||
$_GET["edit"] = "1";
|
||||
|
||||
} elseif (!userNameValidator($vorname)) {
|
||||
$error = "Der Vorname muss 2 bis 50 Zeichen lang sein und darf nur Buchstaben, Leerzeichen und Bindestriche enthalten.";
|
||||
$_GET["edit"] = "1";
|
||||
|
||||
} elseif (!userNameValidator($nachname)) {
|
||||
$error = "Der Nachname muss 2 bis 50 Zeichen lang sein und darf nur Buchstaben, Leerzeichen und Bindestriche enthalten.";
|
||||
$_GET["edit"] = "1";
|
||||
|
||||
} elseif (!userOptionalPasswordValidator($password)) {
|
||||
$error = "Das Passwort muss 8 bis 72 Zeichen lang sein.";
|
||||
$_GET["edit"] = "1";
|
||||
|
||||
} else {
|
||||
$existingUser = $dao->findUser($newEmail);
|
||||
$updated = $dao->updateUser(
|
||||
$oldEmail,
|
||||
$newEmail,
|
||||
$vorname,
|
||||
$nachname,
|
||||
$password
|
||||
);
|
||||
|
||||
if ($existingUser && $newEmail !== $oldEmail) {
|
||||
$error = "Diese E-Mail-Adresse wird bereits verwendet.";
|
||||
if ($updated) {
|
||||
$_SESSION["user"] = $vorname . " " . $nachname;
|
||||
$_SESSION["user_email"] = $newEmail;
|
||||
|
||||
header("Location: index.php?pfad=profile");
|
||||
exit();
|
||||
} else {
|
||||
$updated = $dao->updateUser(
|
||||
$oldEmail,
|
||||
$newEmail,
|
||||
$vorname,
|
||||
$nachname,
|
||||
$password
|
||||
);
|
||||
|
||||
if ($updated) {
|
||||
$_SESSION["user"] = $vorname . " " . $nachname;
|
||||
$_SESSION["user_email"] = $newEmail;
|
||||
|
||||
header("Location: index.php?pfad=profile");
|
||||
exit();
|
||||
} else {
|
||||
$error = "Die Daten konnten nicht gespeichert werden.";
|
||||
}
|
||||
$error = "Die Daten konnten nicht gespeichert werden.";
|
||||
$_GET["edit"] = "1";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -104,6 +80,12 @@ try {
|
||||
$_SESSION["message"] = "user_has_no_articles";
|
||||
}
|
||||
|
||||
} catch (InvalidArgumentException $e) {
|
||||
$error = $e->getMessage();
|
||||
$_GET["edit"] = "1";
|
||||
|
||||
} catch (Exception $e) {
|
||||
$error = "Es ist ein interner Fehler aufgetreten. Bitte versuche es erneut.";
|
||||
$_SESSION["message"] = "internal_error";
|
||||
$_GET["edit"] = "1";
|
||||
}
|
||||
@@ -1,37 +1,43 @@
|
||||
<?php
|
||||
|
||||
require_once "php/model/LocalUserDAO.php";
|
||||
require_once "php/validator/user-validator.php";
|
||||
|
||||
$dao = new LocalUserDAO();
|
||||
$error = null;
|
||||
|
||||
if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
||||
|
||||
$email = $_POST["email"] ?? "";
|
||||
$vorname = $_POST["vorname"] ?? "";
|
||||
$nachname = $_POST["nachname"] ?? "";
|
||||
$password = password_hash(
|
||||
$_POST["password"] ?? "",
|
||||
PASSWORD_DEFAULT
|
||||
);
|
||||
|
||||
if ($dao->findUser($email)) {
|
||||
|
||||
$error = "Diese E-Mail-Adresse ist bereits registriert.";
|
||||
$email = trim($_POST["email"] ?? "");
|
||||
$vorname = trim($_POST["vorname"] ?? "");
|
||||
$nachname = trim($_POST["nachname"] ?? "");
|
||||
$plainPassword = $_POST["password"] ?? "";
|
||||
|
||||
if (!userEmailValidator($email)) {
|
||||
$error = "Bitte gib eine gültige E-Mail-Adresse ein.";
|
||||
} elseif (!userNameValidator($vorname)) {
|
||||
$error = "Der Vorname muss 2 bis 50 Zeichen lang sein und darf nur Buchstaben, Umlaute, Leerzeichen und Bindestriche enthalten.";
|
||||
} elseif (!userNameValidator($nachname)) {
|
||||
$error = "Der Nachname muss 2 bis 50 Zeichen lang sein und darf nur Buchstaben, Umlaute, Leerzeichen und Bindestriche enthalten.";
|
||||
} elseif (!userPasswordValidator($plainPassword)) {
|
||||
$error = "Das Passwort muss 8 bis 72 Zeichen lang sein.";
|
||||
} else {
|
||||
try {
|
||||
$dao = new LocalUserDAO();
|
||||
|
||||
$dao->addUser(
|
||||
$email,
|
||||
$vorname,
|
||||
$nachname,
|
||||
$password
|
||||
);
|
||||
$password = password_hash($plainPassword, PASSWORD_DEFAULT);
|
||||
|
||||
$_SESSION["user"] = $vorname . " " . $nachname;
|
||||
$_SESSION["user_email"] = $email;
|
||||
$dao->addUser($email, $vorname, $nachname, $password);
|
||||
|
||||
header("Location: index.php");
|
||||
exit();
|
||||
$_SESSION["user"] = $vorname . " " . $nachname;
|
||||
$_SESSION["user_email"] = $email;
|
||||
|
||||
header("Location: index.php");
|
||||
exit();
|
||||
|
||||
} catch (InvalidArgumentException $e) {
|
||||
$error = $e->getMessage();
|
||||
} catch (Exception $e) {
|
||||
$error = "Die Registrierung konnte nicht gespeichert werden.";
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user