prepare("INSERT INTO users (username, password, role_id, bunk_id) VALUES (?, ?, ?, ?)"); $stmt->execute([$username, $hashed_password, $role_id, $bunk_id]); $_SESSION['notification'] = ['text' => 'User added successfully!', 'type' => 'success']; } catch (PDOException $e) { $_SESSION['notification'] = ['text' => 'Error adding user: ' . $e->getMessage(), 'type' => 'danger']; } } else { $_SESSION['notification'] = ['text' => 'Username, password, and role are required.', 'type' => 'warning']; } } // Edit User elseif (isset($_POST['edit_user'])) { $id = $_POST['user_id']; $username = trim($_POST['username']); $role_id = $_POST['role_id']; $bunk_id = !empty($_POST['bunk_id']) ? $_POST['bunk_id'] : null; $password = $_POST['password']; if (!empty($username) && !empty($role_id) && !empty($id)) { try { if (!empty($password)) { $hashed_password = password_hash($password, PASSWORD_BCRYPT); $stmt = $db->prepare("UPDATE users SET username = ?, role_id = ?, bunk_id = ?, password = ? WHERE id = ?"); $stmt->execute([$username, $role_id, $bunk_id, $hashed_password, $id]); } else { $stmt = $db->prepare("UPDATE users SET username = ?, role_id = ?, bunk_id = ? WHERE id = ?"); $stmt->execute([$username, $role_id, $bunk_id, $id]); } $_SESSION['notification'] = ['text' => 'User updated successfully!', 'type' => 'success']; } catch (PDOException $e) { $_SESSION['notification'] = ['text' => 'Error updating user: ' . $e->getMessage(), 'type' => 'danger']; } } else { $_SESSION['notification'] = ['text' => 'Username, role, and ID are required.', 'type' => 'warning']; } } header("Location: users.php"); exit; } // Delete User (Soft Delete) if (isset($_GET['action']) && $_GET['action'] === 'delete' && isset($_GET['id'])) { try { $db = db(); $stmt = $db->prepare("UPDATE users SET deleted_at = NOW() WHERE id = ?"); $stmt->execute([$_GET['id']]); $_SESSION['notification'] = ['text' => 'User deleted successfully!', 'type' => 'success']; } catch (PDOException $e) { $_SESSION['notification'] = ['text' => 'Error deleting user: ' . $e->getMessage(), 'type' => 'danger']; } header("Location: users.php"); exit; } if (isset($_SESSION['notification'])) { $notification = $_SESSION['notification']; unset($_SESSION['notification']); } // Fetch roles and bunks for dropdowns $roles = db()->query("SELECT * FROM roles")->fetchAll(PDO::FETCH_ASSOC); $bunks = db()->query("SELECT * FROM bunks WHERE deleted_at IS NULL")->fetchAll(PDO::FETCH_ASSOC); $users = db()->query("SELECT u.*, r.name as role_name, b.name as bunk_name FROM users u JOIN roles r ON u.role_id = r.id LEFT JOIN bunks b ON u.bunk_id = b.id WHERE u.deleted_at IS NULL ORDER BY u.created_at DESC")->fetchAll(PDO::FETCH_ASSOC); $page_title = "User Management"; ?>
| ID | Username | Role | Assigned Bunk | Created At | Actions |
|---|---|---|---|---|---|
| No users found. | |||||
| = htmlspecialchars($user['id']) ?> | = htmlspecialchars($user['username']) ?> | = htmlspecialchars($user['role_name']) ?> | = htmlspecialchars($user['bunk_name'] ?? 'N/A') ?> | = htmlspecialchars(date('Y-m-d H:i', strtotime($user['created_at']))) ?> | |