prepare("UPDATE roles SET permissions = ? WHERE id = ?"); $stmt->execute([$perms_json, $role_id]); $_SESSION['flash_message'] = __('permissions_updated'); } catch (Exception $e) { $_SESSION['flash_message'] = "Error: " . $e->getMessage(); } header("Location: roles.php"); exit; } if (isset($_POST['action']) && $_POST['action'] === 'add_role') { try { $name = trim($_POST['name']); $perms = isset($_POST['permissions']) ? $_POST['permissions'] : []; if (empty($name)) { throw new Exception("Role name is required"); } // Generate slug $slug = strtolower(trim(preg_replace('/[^A-Za-z0-9-]+/', '-', $name))); // Check if slug exists $stmt = $db->prepare("SELECT COUNT(*) FROM roles WHERE slug = ?"); $stmt->execute([$slug]); if ($stmt->fetchColumn() > 0) { throw new Exception("Role with this name already exists"); } // Encode permissions $perms_json = json_encode($perms); $stmt = $db->prepare("INSERT INTO roles (name, slug, permissions) VALUES (?, ?, ?)"); $stmt->execute([$name, $slug, $perms_json]); $_SESSION['flash_message'] = "Role added successfully"; } catch (Exception $e) { $_SESSION['flash_message'] = "Error: " . $e->getMessage(); } header("Location: roles.php"); exit; } } // Fetch Roles $stmt = $db->query("SELECT * FROM roles ORDER BY name ASC"); $roles = $stmt->fetchAll(PDO::FETCH_ASSOC); // Define Available Permissions $available_permissions = [ 'dashboard', 'patients', 'visits', 'appointments', 'home_visits', 'queue', 'laboratory', 'xray', 'pharmacy', 'inventory', 'billing', 'insurance', 'hr', 'reports', 'settings', 'users' ]; ?>
| ID | |||
|---|---|---|---|
| All Access'; } else { $count = count($role_perms); echo $count > 0 ? $count . ' modules' : 'None'; } ?> | Full Access |