diff options
| author | Connor Thomson <blumatrikz@gmail.com> | 2026-09-20 20:21:07 -0700 |
|---|---|---|
| committer | Connor Thomson <blumatrikz@gmail.com> | 2026-09-20 20:21:07 -0700 |
| commit | 4130fd431d8c54573f231b4334dc02196d35f832 (patch) | |
| tree | 9028daae2c1b0ae902d7a28529a81fc03d0b6156 | |
| parent | bc4cb7be00b4cbf893e2a47043f88c8a43136e96 (diff) | |
Add a drop down menu and signout
| -rwxr-xr-x | css/desktop/dropdown.css | 52 | ||||
| -rwxr-xr-x | css/desktop/navbar.css | 5 | ||||
| -rwxr-xr-x | html/account.html | 8 | ||||
| -rwxr-xr-x | html/stylesheets.html | 1 | ||||
| -rwxr-xr-x | php/session.php | 19 | ||||
| -rwxr-xr-x | signout/index.php | 28 |
6 files changed, 108 insertions, 5 deletions
diff --git a/css/desktop/dropdown.css b/css/desktop/dropdown.css new file mode 100755 index 0000000..4691602 --- /dev/null +++ b/css/desktop/dropdown.css @@ -0,0 +1,52 @@ +/* + * GNUfault.org - GNUfault's website + * Copyright (C) 2026 Connor Thomson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +.account .toggle { + display: none; +} + +.account .username { + margin: 3px; + cursor: pointer; +} + +.account .username:hover { + text-decoration: underline; +} + +.account .menu { + display: none; + position: absolute; + top: 100%; + right: 5px; + padding: 3px; + background-color: white; + border: 1px solid #12A3EB; + border-radius: 3px; +} + +.account .toggle:checked ~ .menu { + display: block; +} + +.account .menu a { + display: block; + margin: 0; + padding: 1px 3px 1px 3px; + white-space: nowrap; +} diff --git a/css/desktop/navbar.css b/css/desktop/navbar.css index c013565..c1e8ee2 100755 --- a/css/desktop/navbar.css +++ b/css/desktop/navbar.css @@ -17,6 +17,7 @@ */ .header .navbar { + position: relative; height: 35px; padding: 5px; background-color: #CADCEB; @@ -35,7 +36,3 @@ .header .navbar a:hover { text-decoration: underline; } - -.header .navbar .username { - margin: 3px; -} diff --git a/html/account.html b/html/account.html index cad5558..251d33e 100755 --- a/html/account.html +++ b/html/account.html @@ -16,4 +16,10 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. --> -<span class="username">{{username}}</span> +<div class="account"> + <input class="toggle" type="checkbox" id="account"> + <label class="username" for="account">{{username}}</label> + <div class="menu"> + <a href="/signout">Sign-out</a> + </div> +</div> diff --git a/html/stylesheets.html b/html/stylesheets.html index 4e3852c..8c97095 100755 --- a/html/stylesheets.html +++ b/html/stylesheets.html @@ -26,3 +26,4 @@ <link rel="stylesheet" href="/css/{{device}}/input.css"> <link rel="stylesheet" href="/css/{{device}}/login.css"> <link rel="stylesheet" href="/css/{{device}}/navbar.css"> +<link rel="stylesheet" href="/css/{{device}}/dropdown.css"> diff --git a/php/session.php b/php/session.php index acb2df3..6f2d714 100755 --- a/php/session.php +++ b/php/session.php @@ -84,6 +84,25 @@ function set_user_id(int $user_id): void { $_SESSION['user_id'] = $user_id; } +function sign_out(): void { + if (!has_session()) { + return; + } + + start_session(); + + $_SESSION = []; + + $parameters = session_cookie(0); + $parameters['expires'] = time() - 3600; + + unset($parameters['lifetime']); + + setcookie(session_name(), '', $parameters); + + session_destroy(); +} + function get_user_id(): ?int { if (!has_session()) { return null; diff --git a/signout/index.php b/signout/index.php new file mode 100755 index 0000000..cf44de6 --- /dev/null +++ b/signout/index.php @@ -0,0 +1,28 @@ +<?php +/* + * GNUfault.org - GNUfault's website + * Copyright (C) 2026 Connor Thomson + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <https://www.gnu.org/licenses/>. + */ + +define('ROOT', rtrim($_SERVER['DOCUMENT_ROOT'], '/') . '/'); + +require_once ROOT . '/php/session.php'; + +sign_out(); + +header("Location: /"); + +?> |
