Profildaten bearbeiten
This commit is contained in:
+48
-10
@@ -1,36 +1,74 @@
|
|||||||
<?php
|
<?php
|
||||||
include_once 'php/controller/profile-controller.php';
|
include_once 'php/controller/profile-controller.php';
|
||||||
|
|
||||||
$user = $user ?? null;
|
$user = $user ?? null;
|
||||||
|
$isEditMode = isset($_GET["edit"]) && $_GET["edit"] === "1";
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<main class="form-page">
|
<main class="form-page">
|
||||||
<div class="flexbox">
|
<div class="flexbox">
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<form>
|
|
||||||
|
<?php if (isset($error) && $error): ?>
|
||||||
|
<p style="color:red;">
|
||||||
|
<?php echo htmlspecialchars($error); ?>
|
||||||
|
</p>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<form method="post" action="index.php?pfad=profile">
|
||||||
|
|
||||||
<label class="input-label">Vorname</label>
|
<label class="input-label">Vorname</label>
|
||||||
<input type="text"
|
<input type="text"
|
||||||
|
name="vorname"
|
||||||
class="login-input"
|
class="login-input"
|
||||||
readonly
|
value="<?php echo htmlspecialchars($user["vorname"] ?? ""); ?>"
|
||||||
value="<?php echo htmlspecialchars($user["vorname"] ?? ""); ?>">
|
<?php echo $isEditMode ? "" : "readonly"; ?>
|
||||||
|
required>
|
||||||
|
|
||||||
<label class="input-label">Nachname</label>
|
<label class="input-label">Nachname</label>
|
||||||
<input type="text"
|
<input type="text"
|
||||||
|
name="nachname"
|
||||||
class="login-input"
|
class="login-input"
|
||||||
readonly
|
value="<?php echo htmlspecialchars($user["nachname"] ?? ""); ?>"
|
||||||
value="<?php echo htmlspecialchars($user["nachname"] ?? ""); ?>">
|
<?php echo $isEditMode ? "" : "readonly"; ?>
|
||||||
|
required>
|
||||||
|
|
||||||
<label class="input-label">Email-Adresse</label>
|
<label class="input-label">Email-Adresse</label>
|
||||||
<input type="email"
|
<input type="email"
|
||||||
|
name="email"
|
||||||
class="login-input"
|
class="login-input"
|
||||||
readonly
|
value="<?php echo htmlspecialchars($user["email"] ?? ""); ?>"
|
||||||
value="<?php echo htmlspecialchars($user["email"] ?? ""); ?>">
|
<?php echo $isEditMode ? "" : "readonly"; ?>
|
||||||
|
required>
|
||||||
|
|
||||||
<label class="input-label">Passwort</label>
|
<label class="input-label">
|
||||||
|
<?php echo $isEditMode ? "Neues Passwort" : "Passwort"; ?>
|
||||||
|
</label>
|
||||||
<input type="password"
|
<input type="password"
|
||||||
|
name="password"
|
||||||
class="login-input"
|
class="login-input"
|
||||||
readonly
|
placeholder="<?php echo $isEditMode ? "Leer lassen, wenn es gleich bleiben soll" : "********"; ?>"
|
||||||
value="********">
|
<?php echo $isEditMode ? "" : "readonly"; ?>>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<?php if ($isEditMode): ?>
|
||||||
|
<button type="submit"
|
||||||
|
name="saveProfile"
|
||||||
|
class="button">
|
||||||
|
Speichern
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<a href="index.php?pfad=profile" class="button">
|
||||||
|
Abbrechen
|
||||||
|
</a>
|
||||||
|
<?php else: ?>
|
||||||
|
<a href="index.php?pfad=profile&edit=1" class="button">
|
||||||
|
Bearbeiten
|
||||||
|
</a>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
|
|||||||
@@ -9,8 +9,52 @@ if (!isset($_SESSION["user"])) {
|
|||||||
exit();
|
exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$dao = new LocalUserDAO();
|
||||||
|
$error = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$dao = new LocalUserDAO();
|
$user = $dao->findUser($_SESSION["user_email"] ?? "");
|
||||||
|
|
||||||
|
if (!$user) {
|
||||||
|
$_SESSION = [];
|
||||||
|
session_destroy();
|
||||||
|
|
||||||
|
header("Location: index.php?pfad=login");
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["saveProfile"])) {
|
||||||
|
$oldEmail = $_SESSION["user_email"];
|
||||||
|
$newEmail = $_POST["email"] ?? "";
|
||||||
|
$vorname = $_POST["vorname"] ?? "";
|
||||||
|
$nachname = $_POST["nachname"] ?? "";
|
||||||
|
$password = $_POST["password"] ?? "";
|
||||||
|
|
||||||
|
$existingUser = $dao->findUser($newEmail);
|
||||||
|
|
||||||
|
if ($existingUser && $newEmail !== $oldEmail) {
|
||||||
|
$error = "Diese E-Mail-Adresse wird bereits verwendet.";
|
||||||
|
} 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.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$user = $dao->findUser($_SESSION["user_email"] ?? "");
|
$user = $dao->findUser($_SESSION["user_email"] ?? "");
|
||||||
|
|
||||||
$articleManager = ArticleManager::getInstance();
|
$articleManager = ArticleManager::getInstance();
|
||||||
@@ -23,12 +67,4 @@ try {
|
|||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$_SESSION["message"] = "internal_error";
|
$_SESSION["message"] = "internal_error";
|
||||||
exit();
|
exit();
|
||||||
}
|
|
||||||
|
|
||||||
if (!$user) {
|
|
||||||
$_SESSION = [];
|
|
||||||
session_destroy();
|
|
||||||
|
|
||||||
header("Location: index.php?pfad=login");
|
|
||||||
exit();
|
|
||||||
}
|
}
|
||||||
@@ -56,6 +56,29 @@ class LocalUserDAO implements UserDAOInterface {
|
|||||||
$this->saveUsers($users);
|
$this->saveUsers($users);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateUser($oldEmail, $newEmail, $vorname, $nachname, $password = null) {
|
||||||
|
$users = $this->loadUsers();
|
||||||
|
|
||||||
|
foreach ($users as $i => $user) {
|
||||||
|
if ($user["email"] === $oldEmail) {
|
||||||
|
$users[$i]["email"] = $newEmail;
|
||||||
|
$users[$i]["vorname"] = $vorname;
|
||||||
|
$users[$i]["nachname"] = $nachname;
|
||||||
|
|
||||||
|
unset($users[$i]["username"]);
|
||||||
|
|
||||||
|
if (!empty($password)) {
|
||||||
|
$users[$i]["password"] = password_hash($password, PASSWORD_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->saveUsers($users);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public function deleteUser($email) {
|
public function deleteUser($email) {
|
||||||
$users = $this->loadUsers();
|
$users = $this->loadUsers();
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,18 @@ interface UserDAOInterface {
|
|||||||
*/
|
*/
|
||||||
public function addUser($email, $vorname, $nachname, $password);
|
public function addUser($email, $vorname, $nachname, $password);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Aktualisiert einen bestehenden Benutzer.
|
||||||
|
*
|
||||||
|
* @param string $oldEmail Alte E-Mail-Adresse
|
||||||
|
* @param string $newEmail Neue E-Mail-Adresse
|
||||||
|
* @param string $vorname Neuer Vorname
|
||||||
|
* @param string $nachname Neuer Nachname
|
||||||
|
* @param string|null $password Neues Passwort oder null
|
||||||
|
* @return bool true, wenn der Benutzer aktualisiert wurde, sonst false
|
||||||
|
*/
|
||||||
|
public function updateUser($oldEmail, $newEmail, $vorname, $nachname, $password = null);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Löscht einen Benutzer anhand seiner E-Mail-Adresse.
|
* Löscht einen Benutzer anhand seiner E-Mail-Adresse.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user