user change info + add hovers für buttons

This commit is contained in:
Illia Hromovoi 2025-07-10 10:20:36 +02:00
parent 2c044b2498
commit 3964f90a30
6 changed files with 134 additions and 38 deletions

View File

@ -56,3 +56,29 @@
.btn-logout{ .btn-logout{
background-color: red; background-color: red;
} }
.btn-userchange{
background-color: var(--brand-white);
color: var(--brand-background);
}
/* Hovers */
.btn-primary:hover {
background-color: var(--brand-primary-hover);
}
.btn-secondary:hover {
background-color: var(--bg-muted-hover);
}
.btn-accent:hover {
background-color: var(--fullblock-hover);
}
.btn-danger:hover {
background-color: var(--error-hover);
}
.btn-userchange:hover, .btn-logout:hover{
opacity: 0.95;
}

32
CSS/Element/sidebar.css Normal file
View File

@ -0,0 +1,32 @@
.sidebar {
width: 200px;
background-color: transparent;
height: 100%;
}
.sidebar nav ul {
margin: 0;
padding: 0;
}
.sidebar nav ul li {
margin-bottom: 0.5rem;
list-style: none;
}
.sidebar nav ul li a {
text-decoration: none;
color: #333;
display: block;
padding: 0.5rem;
border-radius: 4px;
}
.sidebar nav ul li a:hover {
background-color: #e2e6ea;
}
.sidebar button{
width: 100%;
padding: 10px 10px;
}

View File

@ -6,6 +6,7 @@
@import url(Element/form.css); @import url(Element/form.css);
@import url(Element/button.css); @import url(Element/button.css);
@import url(Element/card.css); @import url(Element/card.css);
@import url(Element/sidebar.css);
*, *,
*:before, *:before,
@ -37,6 +38,10 @@ h2 {
color: orange; color: orange;
} }
*, button, a {
transition: background-color 0.2s, color 0.2s;
}
main { main {
margin-top: 190px; margin-top: 190px;
} }

View File

@ -8,7 +8,6 @@
--input-placeholder: #998E82; --input-placeholder: #998E82;
--error: #FF0000; --error: #FF0000;
/*Fonts*/ /*Fonts*/
--font-family-main: "Inter", sans-serif; --font-family-main: "Inter", sans-serif;
--font-family-headline: "Source Serif 4", serif; --font-family-headline: "Source Serif 4", serif;
@ -24,4 +23,11 @@
--h-md: 48px; --h-md: 48px;
--border-primary: 1px solid #998E82; --border-primary: 1px solid #998E82;
/* Hover Variants */
--brand-primary-hover: #FF9E33;
--brand-background-hover: #2A231F;
--bg-muted-hover: #6A6A6A;
--fullblock-hover: #00008B;
--error-hover: #CC0000;
} }

View File

@ -280,18 +280,18 @@ class UserController{
} }
$submitted = [ $submitted = [
'vorname' => trim($_POST['vorname'] ?? ''),
'name' => trim($_POST['name'] ?? ''), 'name' => trim($_POST['name'] ?? ''),
'lastname' => trim($_POST['lastname'] ?? ''),
'email' => trim($_POST['email'] ?? ''), 'email' => trim($_POST['email'] ?? ''),
'password' => trim($_POST['password'] ?? ''), 'password' => trim($_POST['password'] ?? ''),
]; ];
$this->errors = []; $this->errors = [];
if (strlen($submitted['name']) < 2) { if (strlen($submitted['vorname']) < 2) {
$this->errors['name'] = 'Vorname muss mindestens 2 Zeichen haben.'; $this->errors['vorname'] = 'Vorname muss mindestens 2 Zeichen haben.';
} }
if (strlen($submitted['lastname']) < 2) { if (strlen($submitted['name']) < 2) {
$this->errors['lastname'] = 'Nachname muss mindestens 2 Zeichen haben.'; $this->errors['name'] = 'Nachname muss mindestens 2 Zeichen haben.';
} }
if (!filter_var($submitted['email'], FILTER_VALIDATE_EMAIL)) { if (!filter_var($submitted['email'], FILTER_VALIDATE_EMAIL)) {
$this->errors['email'] = 'Ungültige E-Mail-Adresse.'; $this->errors['email'] = 'Ungültige E-Mail-Adresse.';
@ -303,24 +303,31 @@ class UserController{
if (count($this->errors) > 0) { if (count($this->errors) > 0) {
$this->view->setVars([ $this->view->setVars([
'labels' => $this->changeUserLabels, 'changeUserLabels' => $this->changeUserLabels,
'validData' => $submitted, 'validData' => $submitted,
'errors' => $this->errors, 'errors' => $this->errors,
]); ]);
return;
$this->view->render('User/showUserChangeAccountSettings'); $this->view->render('User/showUserChangeAccountSettings');
return;
} }
$updateData = []; $updateData = [];
if ($submitted['name'] !== $currentUser['firstname']) { if ($submitted['vorname'] !== $currentUser['vorname']) {
$updateData['firstname'] = $submitted['name']; // PHP name = DB firstname $updateData['vorname'] = $submitted['vorname'];
} }
if ($submitted['lastname'] !== $currentUser['name']) { if ($submitted['name'] !== $currentUser['name']) {
$updateData['name'] = $submitted['lastname']; // PHP lastname = DB name $updateData['name'] = $submitted['name'];
} }
if ($submitted['email'] !== $currentUser['email']) { if ($submitted['email'] !== $currentUser['email']) {
$updateData['email'] = $submitted['email']; $updateData['email'] = $submitted['email'];
} }
if ($submitted['password'] !== '') {
// Passwort und Salt auf neu setzen
$salt = bin2hex(random_bytes(16));
$hash = hash('sha256', $submitted['password'] . $salt);
$updateData['passwort'] = $hash;
$updateData['salt'] = $salt;
}
if ($submitted['password'] !== '') { if ($submitted['password'] !== '') {
@ -344,15 +351,21 @@ class UserController{
$_SESSION['email'] = $updateData['email'] ?? $_SESSION['email']; $_SESSION['email'] = $updateData['email'] ?? $_SESSION['email'];
$this->message = 'Änderungen erfolgreich gespeichert.'; $this->message = 'Änderungen erfolgreich gespeichert.';
echo "ok";
header("Location: index.php?controller=user&do=showUserAccountPage"); header("Location: index.php?controller=user&do=showUserAccountPage");
exit(); exit();
} else { } else {
$this->errors['general'] = 'Beim Speichern ist ein Fehler aufgetreten.'; $this->errors['general'] = 'Beim Speichern ist ein Fehler aufgetreten.';
$this->view->setVars([
'changeUserLabels' => $this->changeUserLabels,
'validData' => $submitted,
'errors' => $this->errors,
]);
$this->view->setDoMethodName('showUserChangeAccountSettings');
return; return;
} }
$this->view->render('User/showUserAccountPage');
return;
} }

View File

@ -6,28 +6,42 @@
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
<h1>Hallo, <div class="row">
<?php echo ($_SESSION['vorname'] ?? "") . " " . ($_SESSION['name'] ?? "") ?> <div class="col-8">
</br> <h1>Hallo,
Hier können Sie ihren Account verwalten. <?php echo ($_SESSION['vorname'] ?? "") . " " . ($_SESSION['name'] ?? "") ?>
</h1> </br>
<div class="row"> Hier können Sie ihren Account verwalten.
<form method="post"> </h1>
<input type="hidden" name="controller" value="user"> </div>
<input type="hidden" name="do" value="logout"> <div class="col-4 sidebar">
<button type="submit" class="btn btn-logout">Ausloggen</button> <nav>
</form> <ul>
<form method="post"> <li>
<input type="hidden" name="controller" value="user"> <form method="post">
<input type="hidden" name="do" value="deleteAccount"> <input type="hidden" name="controller" value="user">
<button type="submit" class="btn btn-logout">Meinen Account löschen</button> <input type="hidden" name="do" value="logout">
</form> <button type="submit" class="btn btn-primary">Ausloggen</button>
<form method="post"> </form>
<input type="hidden" name="controller" value="user"> </li>
<input type="hidden" name="do" value="changeAccountDataRedirect"> <li>
<button type="submit" class="btn btn-logout">Meine Kontodaten ändern</button> <form method="post">
</form> <input type="hidden" name="controller" value="user">
</div> <input type="hidden" name="do" value="changeAccountDataRedirect">
<button type="submit" class="btn btn-userchange">Meine Kontodaten ändern</button>
</form>
</li>
<li>
<form method="post">
<input type="hidden" name="controller" value="user">
<input type="hidden" name="do" value="deleteAccount">
<button type="submit" class="btn btn-logout">Meinen Account löschen</button>
</form>
</li>
</ul>
</nav>
</div>
</div>
</div> </div>
</div> </div>
<?php <?php