drago-ex/permission

Lightweight ACL and role management.

Installs: 1

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/drago-ex/permission

dev-main 2026-01-11 18:21 UTC

This package is auto-updated.

Last update: 2026-01-11 18:21:54 UTC


README

Lightweight ACL and role management.

The package provides a central ACL factory, modular permission registration per module, and automatic authorization checks in presenters.

License: MIT PHP version Coding Style

Requirements

  • PHP >= 8.3
  • Nette Framework
  • Composer

Installation

composer require drago-ex/permission

Features

  • Central ACL creation
  • Modular permission providers per module
  • Default roles: guest, member, admin
  • Automatic presenter authorization
  • Action and signal based privileges

Roles

Default roles:

  • guest
  • member (inherits from guest)
  • admin (inherits from member)

Roles are registered automatically.

Permission Factory

PermissionFactory creates a Nette\Security\Permission instance, registers default roles, and runs all registered permission providers.

Providers are collected via DI tags.

Permission Providers

Each module registers its own permissions using a Provider implementation.

Providers:

  • register ACL resources
  • define allow / deny rules
  • live inside the module they belong to

Typical resource naming:

  • Backend:Sign
  • Frontend:Article

DI Configuration

Permission factory:

services:
	permissionFactory:
		class: App\UI\PermissionFactory
		arguments: [tagged(PermisionTag)]

	- @permissionFactory::create

Module provider:

services:
	signPermission:
		class: Drago\Permission\PermissionFactory
		tags: [PermisionTag]

Presenter Authorization

Authorization is handled by the Authorization trait.

  • runs automatically on presenter startup
  • checks ACL using presenter name and action or signal

Unauthorized access:

  • not logged in → redirect to Sign:in
  • logged in but forbidden → HTTP 403