/home/techb158/workloadmatch.com/Admin
Edit: /home/techb158/workloadmatch.com/Admin/roles.php (15833B)
prepare("INSERT INTO roles (role_name, description, is_system, status, created_at) VALUES (?, ?, 0, 1, NOW())");
$stmt->bind_param('ss', $name, $desc);
if ($stmt->execute()) {
$roleId = $stmt->insert_id;
set_flash_msg("Role '$name' created successfully.", 'success');
log_activity($mysqli, 'create', 'role', $roleId, $name);
} else {
set_flash_msg('Error creating role: ' . $stmt->error, 'danger');
}
$stmt->close();
header('Location: roles.php'); exit();
}
if (isset($_POST['edit_role'])) {
$roleId = (int)$_POST['role_id'];
$name = trim($_POST['role_name']);
$desc = trim($_POST['description'] ?? '');
$stmt = $mysqli->prepare("UPDATE roles SET role_name=?, description=? WHERE role_id=?");
$stmt->bind_param('ssi', $name, $desc, $roleId);
if ($stmt->execute()) {
set_flash_msg("Role '$name' updated.", 'success');
log_activity($mysqli, 'edit', 'role', $roleId, $name);
} else {
set_flash_msg('Error updating role.', 'danger');
}
$stmt->close();
header('Location: roles.php'); exit();
}
if (isset($_GET['toggle']) && isset($_GET['rid'])) {
$rid = (int)$_GET['rid'];
$stmt = $mysqli->prepare("SELECT role_name, status FROM roles WHERE role_id=?");
$stmt->bind_param('i', $rid);
$stmt->execute();
$stmt->bind_result($rname, $rstatus);
$stmt->fetch();
$stmt->close();
if ($rname !== null) {
$newStatus = $rstatus == 1 ? 0 : 1;
$upd = $mysqli->prepare("UPDATE roles SET status=? WHERE role_id=?");
$upd->bind_param('ii', $newStatus, $rid);
$upd->execute();
$upd->close();
$action = $newStatus == 1 ? 'enable' : 'disable';
set_flash_msg("Role '$rname' " . ($newStatus == 1 ? 'enabled' : 'disabled') . '.', 'success');
log_activity($mysqli, $action, 'role', $rid, $rname);
}
header('Location: roles.php'); exit();
}
if (isset($_GET['delete']) && isset($_GET['rid'])) {
$rid = (int)$_GET['rid'];
$stmt = $mysqli->prepare("SELECT role_name, is_system FROM roles WHERE role_id=?");
$stmt->bind_param('i', $rid);
$stmt->execute();
$stmt->bind_result($rname, $isSystem);
$stmt->fetch();
$stmt->close();
if ($isSystem == 1) {
set_flash_msg("System role '$rname' cannot be deleted.", 'danger');
} elseif ($rname !== null) {
$mysqli->query("DELETE FROM role_permissions WHERE role_id = $rid");
$del = $mysqli->prepare("DELETE FROM roles WHERE role_id=?");
$del->bind_param('i', $rid);
if ($del->execute()) {
set_flash_msg("Role '$rname' deleted.", 'success');
log_activity($mysqli, 'delete', 'role', $rid, $rname);
}
$del->close();
}
header('Location: roles.php'); exit();
}
if (isset($_POST['save_permissions'])) {
$roleId = (int)$_POST['role_id'];
$roleName = '';
$rn = $mysqli->prepare("SELECT role_name FROM roles WHERE role_id=?");
$rn->bind_param('i', $roleId);
$rn->execute();
$rn->bind_result($roleName);
$rn->fetch();
$rn->close();
$mysqli->query("DELETE FROM role_permissions WHERE role_id = $roleId");
$ins = $mysqli->prepare("INSERT INTO role_permissions (role_id, module, can_view, can_create, can_edit, can_delete, can_enable, can_disable) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
foreach ($modules as $mod) {
$v = isset($_POST["perm_${mod}_view"]) ? 1 : 0;
$c = isset($_POST["perm_${mod}_create"]) ? 1 : 0;
$e = isset($_POST["perm_${mod}_edit"]) ? 1 : 0;
$d = isset($_POST["perm_${mod}_delete"]) ? 1 : 0;
$en = isset($_POST["perm_${mod}_enable"]) ? 1 : 0;
$di = isset($_POST["perm_${mod}_disable"]) ? 1 : 0;
$ins->bind_param('isiiiii', $roleId, $mod, $v, $c, $e, $d, $en, $di);
$ins->execute();
}
$ins->close();
set_flash_msg("Permissions for '$roleName' saved.", 'success');
log_activity($mysqli, 'update_permissions', 'role', $roleId, $roleName);
header('Location: roles.php'); exit();
}
$totalRoles = $mysqli->query("SELECT COUNT(*) FROM roles")->fetch_row()[0];
$activeRoles = $mysqli->query("SELECT COUNT(*) FROM roles WHERE status = 1")->fetch_row()[0];
?>
Admin | Roles & Permissions
| ID | Role Name | Description | System Role | Status | Created | Actions |
query("SELECT role_id, role_name, description, is_system, status, created_at FROM roles ORDER BY role_name");
while ($r = $roles->fetch_assoc()) {
$rid = $r['role_id'];
$rname = htmlspecialchars($r['role_name']);
$desc = htmlspecialchars($r['description'] ?? '');
$sys = $r['is_system'] == 1 ? 'Yes' : 'No';
$status = $r['status'] == 1 ? 'Active' : 'Disabled';
$created = htmlspecialchars(date('Y-m-d', strtotime($r['created_at'])));
$toggleLabel = $r['status'] == 1 ? 'Disable' : 'Enable';
$toggleClass = $r['status'] == 1 ? 'btn-warning' : 'btn-success';
$toggleIcon = $r['status'] == 1 ? 'fa-ban' : 'fa-check';
$canDelete = $r['is_system'] == 1 ? 'disabled' : '';
echo "
| $rid |
$rname |
$desc |
$sys |
$status |
$created |
|
";
}
?>