ACL Manager Plugin

ACL Manager is a plugin that provides access control list (ACL) management functionality for the Festi Framework. It allows you to manage permissions across sections and user types through a visual interface.

Installation

Add Submodule

Add the plugin as a git submodule:

git submodule add git@gitlab.varteq.com:FestiCore/php_festi_plugin_acl.git ./src/dashboard/plugins/ACLManage

Database Installation

After adding the plugin, install the database schema:

Option A: Using Workbench (Automatic)

The plugin will be automatically installed when you run the system installation or update:

Workbench::install();

Option B: Manual SQL Execution

Run the appropriate SQL dump for your database type from the install/ directory:

# For MySQL
mysql -u username -p database_name < install/install.mysql.sql

# For PostgreSQL
psql -U username -d database_name -f install/install.pgsql.sql

Usage

Accessing the Plugin

Get an instance of the plugin through the Core:

$aclPlugin = Core::getInstance()->getPluginInstance('ACLManage');
// or
$aclPlugin = Core::getInstance()->getPluginInstance(ACLManagePlugin::class);

Using Plugin Facades

The plugin provides facades for accessing its functionality:

$plugin = Core::getInstance()->getPluginInstance('ACLManage');

// Get sections facade
$sectionsFacade = $plugin->getSectionsFacade();
$sections = $sectionsFacade->getList();

// Get permissions facade
$permissionsFacade = $plugin->getSectionsPermissionsFacade();
$permissions = $permissionsFacade->getList($userTypeIds);

// Get user types facade
$userTypesFacade = $plugin->getUsersTypesFacade();
$userTypes = $userTypesFacade->getList($workspaceId);

Plugin Routes

The plugin exposes the following routes (when using Jimbo system plugin):

  • GET /manage/acl/ - Main ACL management interface
  • POST /manage/acl/apply/ - Apply permission changes (JSON)
  • GET /manage/acl/users-types/ - User types management interface

From Another Plugin

Access the plugin from within another plugin:

class MyPlugin extends DisplayPlugin
{
    public function someMethod()
    {
        $aclPlugin = $this->plugin->aclmanage;
        $sections = $aclPlugin->getSectionsFacade()->getList();
    }
}

Plugin Features

Sections Management

Manage access control sections that define permission boundaries in your application.

User Types

Define and manage different user types (roles) that can be assigned permissions.

Permissions Matrix

Visual interface for managing permissions across sections and user types, allowing you to: - View all sections and user types in a matrix - Grant or revoke permissions (read, write, exec) - Batch update permissions