PHP code example of tihloh / prefab-permissions

1. Go to this page and download the library: Download tihloh/prefab-permissions library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

tihloh / prefab-permissions example snippets


$permissions = new PermissionManager([
    'definitions' => __DIR__ . '/config/permissions.php',
]);

$permissions = new PermissionManager([
    'definitions' => __DIR__ . '/config/permissions.json',
]);

return [
    'users.manage' => [
        'name' => 'Manage Users',
        'group' => 'Users & Access',
        'default' => false,
        'scopes' => ['global', 'organization'],
    ],
    'requests.edit' => [
        'name' => 'Edit Requests',
        'group' => 'Requests',
        'default' => false,
    ],
];

$permissions->permissionGroup('users.manage');
$permissions->permissionGroups();
$permissions->groupedDefinitions();

if ($permissions->can($user, 'documents.approve')) {
    // Allowed.
}

if ($user->role === 'admin' || ...) {

$permissions->can($user, 'documents.approve');

$permissions->set(
    'user',
    $userId,
    'documents.approve',
    true,
);

$permissions->set(
    'user',
    $userId,
    'documents.approve',
    false,
);

$permissions->clear(
    'user',
    $userId,
    'documents.approve',
);

class User implements PermissionSubjectInterface
{
    public function __construct(
        public int $id,
        public array $groupIds = [],
    ) {}

    public function permissionSubjectId(): int|string
    {
        return $this->id;
    }

    public function permissionGroupIds(): array
    {
        return $this->groupIds;
    }
}

$permissions->can($user, 'documents.approve');

$permissions = new PermissionManager(
    definitions: $definitions,
    store: $customStore,
);

$permissions = new PermissionManager(
    $definitions,
    new PdoPermissionStore($pdo),
);

PrefabConfig::set([
    'database' => $mainPdo,

    'modules' => [
        'permissions' => [
            'definitions' => __DIR__ . '/config/permissions.php',
        ],
    ],
]);

$permissions = new PermissionManager();

PrefabConfig::set([
    'modules' => [
        'permissions' => [
            'connection' => 'security',
        ],
    ],
]);

$routes->get('/documents/{id}', 'DocumentController@show')
    ->auth()
    ->permission('documents.view');

$info = $permissions->explain();

$permissions = new PermissionManager(
    definitions: $definitions,
    store: $store,
);

if ($permissions->can($user, 'reports.view')) {
    showReports();
}

PrefabConfig::set([
    'database' => $mainPdo,
    'modules' => [
        'permissions' => [
            'definitions' => __DIR__ . '/config/permissions.php',
        ],
    ],
]);

$database = new DatabaseManager();
$users = new UserManager();
$auth = new AuthManager();
$permissions = new PermissionManager();
$logs = new LogManager();

if (!$permissions->can($user, 'documents.approve')) {
    http_response_code(403);
    return 'Forbidden';
}

approveDocument($documentId);

return [
    'users.manage' => [
        'name' => 'Manage Users',
        'default' => false,
        'scopes' => ['global', 'organization'],
    ],

    'settings.manage' => [
        'name' => 'Manage System Settings',
        'default' => false,
        'scopes' => ['global'],
    ],
];

$permissions->set('user', $userId, 'users.manage', true);
$permissions->can($userId, 'users.manage');

$permissions->setScoped(
    'user',
    $userId,
    'users.manage',
    true,
    'organization',
    $organizationId,
);

$allowed = $permissions->can(
    $userId,
    'users.manage',
    $groupIds,
    'organization',
    $organizationId,
);

$permissions->can(
    $actorId,
    'documents.manage',
    $groupIds,
    'organization',
    $document->organization_id,
);
text
prefab_subject_permissions_scoped