diff --git a/public/assets/auth/login.css b/public/assets/auth/login.css index 2a05c763..459d56b8 100644 --- a/public/assets/auth/login.css +++ b/public/assets/auth/login.css @@ -190,7 +190,18 @@ body { } .login-password-row input { - padding-right: 56px; + padding-right: 64px; +} + +.login-password-row input::-ms-reveal, +.login-password-row input::-ms-clear { + display: none; +} + +.login-password-row input::-webkit-credentials-auto-fill-button, +.login-password-row input::-webkit-textfield-decoration-container { + visibility: hidden; + pointer-events: none; } .login-password-toggle { @@ -201,13 +212,43 @@ body { display: inline-flex; align-items: center; justify-content: center; - width: 36px; - height: 36px; - border: 0; + width: 34px; + height: 34px; + border: 1px solid rgba(15, 23, 42, 0.16); border-radius: 999px; - background: transparent; - color: rgba(15, 23, 42, 0.56); + background: rgba(15, 23, 42, 0.78); + color: rgba(255, 255, 255, 0.96); + box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18); cursor: pointer; + transition: background-color 160ms ease, transform 160ms ease, box-shadow 160ms ease; +} + +.login-password-toggle:hover { + background: rgba(15, 23, 42, 0.92); + transform: translateY(-50%) scale(1.03); +} + +.login-password-toggle:focus-visible { + outline: 2px solid rgba(14, 165, 233, 0.55); + outline-offset: 2px; +} + +.login-password-icon { + width: 17px; + height: 17px; + display: block; +} + +.login-password-icon-hide { + display: none; +} + +.login-password-toggle.is-visible .login-password-icon-show { + display: none; +} + +.login-password-toggle.is-visible .login-password-icon-hide { + display: block; } .login-field textarea { diff --git a/public/assets/auth/password-visibility.js b/public/assets/auth/password-visibility.js index 5ea1d1c4..9ad14faf 100644 --- a/public/assets/auth/password-visibility.js +++ b/public/assets/auth/password-visibility.js @@ -13,6 +13,7 @@ document.addEventListener('DOMContentLoaded', () => { const isHidden = input.type === 'password'; input.type = isHidden ? 'text' : 'password'; toggle.setAttribute('aria-label', isHidden ? 'Passwort verbergen' : 'Passwort anzeigen'); + toggle.classList.toggle('is-visible', isHidden); }); }); }); diff --git a/public/auth/register/index.php b/public/auth/register/index.php index 85ca81fc..b8c1c008 100644 --- a/public/auth/register/index.php +++ b/public/auth/register/index.php @@ -143,9 +143,17 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { @@ -153,9 +161,17 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { diff --git a/public/auth/reset-password/index.php b/public/auth/reset-password/index.php index da7cf25c..630fbf68 100644 --- a/public/auth/reset-password/index.php +++ b/public/auth/reset-password/index.php @@ -13,12 +13,21 @@ $token = trim((string) ($_GET['token'] ?? $_POST['token'] ?? '')); $record = $service->validate($token); $message = null; $error = null; +$form = [ + 'password' => '', + 'password_confirm' => '', +]; if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $form = [ + 'password' => (string) ($_POST['password'] ?? ''), + 'password_confirm' => (string) ($_POST['password_confirm'] ?? ''), + ]; + $result = $service->complete( $token, - (string) ($_POST['password'] ?? ''), - (string) ($_POST['password_confirm'] ?? '') + $form['password'], + $form['password_confirm'] ); if ($result['success'] ?? false) { @@ -58,12 +67,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {