beginTransaction(); // Clear existing permissions $pdo->exec('TRUNCATE TABLE role_permissions'); $stmt = $pdo->prepare('INSERT INTO role_permissions (role, resource, action, fields) VALUES (?, ?, ?, ?)'); $permissions = $_POST['permissions'] ?? []; foreach ($roles as $role) { foreach ($resources as $resource) { foreach ($actions as $action) { if (!empty($permissions[$role][$resource][$action]['enabled'])) { $fields = $permissions[$role][$resource][$action]['fields'] ?? null; if (in_array($action, ['read', 'update']) && empty($fields)) { $fields = '*'; // Default to all fields if not specified } $stmt->execute([$role, $resource, $action, $fields]); } } } } $pdo->commit(); $success_message = 'Permissions updated successfully!'; } catch (PDOException $e) { if ($pdo->inTransaction()) { $pdo->rollBack(); } $error_message = 'Database error: ' . $e->getMessage(); } } function get_permissions() { try { $pdo = db(); $stmt = $pdo->query('SELECT * FROM role_permissions ORDER BY role, resource, action'); return $stmt->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { return ['error' => 'Database error: ' . $e->getMessage()]; } } $permissions_from_db = get_permissions(); // Group permissions by role and resource for easier display $grouped_permissions = []; foreach ($permissions_from_db as $p) { $grouped_permissions[$p['role']][$p['resource']][$p['action']] = $p['fields']; } ?> Settings - Role Permissions - IC-Inventory

Settings - Role Permissions

$resource): ?>
Role Resource Create Read (Fields) Update (Fields) Delete
>