isAdmin()) {
redirectTo('dashboard.php');
}
$currentUser = $auth->getCurrentUser();
$db = Database::getInstance();
$error = '';
$success = '';
// Handle form submissions
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$action = $_POST['action'] ?? '';
switch ($action) {
case 'create':
$fullName = sanitizeInput($_POST['full_name']);
$email = sanitizeInput($_POST['email']);
$phone = sanitizeInput($_POST['phone']);
$whatsapp = sanitizeInput($_POST['whatsapp']);
$password = $_POST['password'];
$confirmPassword = $_POST['confirm_password'];
$role = sanitizeInput($_POST['role']);
// Validate password match
if ($password !== $confirmPassword) {
$error = "Passwords do not match";
break;
}
// Validate email
if (!validateEmail($email)) {
$error = "Invalid email format";
break;
}
// Check if email exists
$checkEmail = $db->query("SELECT id FROM users WHERE email = '" . $db->escape($email) . "'");
if ($checkEmail->num_rows > 0) {
$error = "Email already exists";
break;
}
$hashedPassword = password_hash($password, PASSWORD_DEFAULT);
$sql = "INSERT INTO users (full_name, email, phone, whatsapp, password, role)
VALUES ('" . $db->escape($fullName) . "', '" . $db->escape($email) . "',
'" . $db->escape($phone) . "', '" . $db->escape($whatsapp) . "',
'" . $db->escape($hashedPassword) . "', '" . $db->escape($role) . "')";
if ($db->query($sql)) {
$success = "User created successfully";
} else {
$error = "Failed to create user";
}
break;
case 'delete':
$userId = (int)$_POST['user_id'];
// Prevent deleting self
if ($userId === (int)$_SESSION['user_id']) {
$error = "Cannot delete your own account";
break;
}
if ($db->query("DELETE FROM users WHERE id = $userId")) {
$success = "User deleted successfully";
} else {
$error = "Failed to delete user";
}
break;
case 'update':
$userId = (int)$_POST['user_id'];
$fullName = sanitizeInput($_POST['full_name']);
$email = sanitizeInput($_POST['email']);
$phone = sanitizeInput($_POST['phone']);
$whatsapp = sanitizeInput($_POST['whatsapp']);
$role = sanitizeInput($_POST['role']);
// Check if email exists for other users
$checkEmail = $db->query("SELECT id FROM users WHERE email = '" . $db->escape($email) . "' AND id != $userId");
if ($checkEmail->num_rows > 0) {
$error = "Email already exists";
break;
}
$sql = "UPDATE users SET
full_name = '" . $db->escape($fullName) . "',
email = '" . $db->escape($email) . "',
phone = '" . $db->escape($phone) . "',
whatsapp = '" . $db->escape($whatsapp) . "',
role = '" . $db->escape($role) . "'
WHERE id = $userId";
if ($db->query($sql)) {
$success = "User updated successfully";
} else {
$error = "Failed to update user";
}
break;
}
}
// Get all users
$users = $db->query("SELECT *, DATE_FORMAT(created_at, '%b %d, %Y') as created_date FROM users ORDER BY created_at DESC");
?>
Users |
| Name |
Email |
Phone |
WhatsApp |
Role |
Created |
Actions |
fetch_assoc()): ?>
|
|
|
|
|
|
|