diff options
| author | Connor Thomson <blumatrikz@gmail.com> | 2026-09-20 21:01:48 -0700 |
|---|---|---|
| committer | Connor Thomson <blumatrikz@gmail.com> | 2026-09-20 21:01:48 -0700 |
| commit | 1b35cf3f1124b161ebde5e9e3a2c74c8ea2821d0 (patch) | |
| tree | 5f1255ab93943e50685d712a6d49b7ca8e2b484b /admin/admin.php | |
| parent | 81cabf40f9063f72f04df9b720d7f0e25a185741 (diff) | |
Add status and more
Diffstat (limited to 'admin/admin.php')
| -rwxr-xr-x | admin/admin.php | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/admin/admin.php b/admin/admin.php new file mode 100755 index 0000000..0a00cf3 --- /dev/null +++ b/admin/admin.php @@ -0,0 +1,89 @@ +<?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/user.php'; + +if (!is_admin()) { + http_response_code(403); + + echo "Forbidden"; + exit; +} + +if ($_SERVER["REQUEST_METHOD"] != "POST") { + header("Location: /admin"); + exit; +} + +$action = isset($_POST['action']) ? $_POST['action'] : ''; +$username = isset($_POST['username']) ? $_POST['username'] : ''; + +try { + if (!find_user($username)) { + echo "User not found."; + exit; + } + + if ($action == 'password') { + $password = $_POST['password']; + $confirmpassword = $_POST['confirmpassword']; + + if ($confirmpassword != $password) { + echo "Passwords do not match!"; + exit; + } + + $sql = "UPDATE users SET password = :password WHERE username = :username"; + + query($sql, [ + 'password' => password_hash($password, PASSWORD_DEFAULT), + 'username' => $username + ]); + } elseif ($action == 'status') { + $status = isset($_POST['status']) ? $_POST['status'] : ''; + + if (!in_array($status, USER_STATUSES, true)) { + echo "That is not a status!"; + exit; + } + + $sql = "UPDATE users SET status = :status WHERE username = :username"; + + query($sql, [ + 'status' => $status, + 'username' => $username + ]); + } elseif ($action == 'remove') { + $sql = "DELETE FROM users WHERE username = :username"; + + query($sql, ['username' => $username]); + } else { + echo "That is not something I can do."; + exit; + } +} catch (\PDOException $e) { + echo "Error: " . $e->getMessage(); + exit; +} + +header("Location: /admin"); + +?> |
