PHPackages                             zennit/abac - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. zennit/abac

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

zennit/abac
===========

Attribute-Based Access Control (ABAC) for Laravel

1.0.7(2mo ago)56MITPHPPHP ^8.3CI passing

Since Feb 17Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/zennit-dev/abac)[ Packagist](https://packagist.org/packages/zennit/abac)[ Docs](https://github.com/zennit-dev/abac)[ RSS](/packages/zennit-abac/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (23)Versions (116)Used By (0)

ABAC (Attribute-Based Access Control) for Laravel
=================================================

[](#abac-attribute-based-access-control-for-laravel)

A flexible ABAC implementation for Laravel 12+ with a developer-friendly permission management API.

[![PHP Version](https://camo.githubusercontent.com/8cd9f585bc844b0f003c0c67fd8f073d2a58ae6fee8f175d2a8d30d2a6452f88/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f7068702d762f7a656e6e69742f616261633f63616368655365636f6e64733d333030)](https://packagist.org/packages/zennit/abac)[![License](https://camo.githubusercontent.com/32b10e78a7e11fbbc3c771eeb11129a03e886446b02b3bb2f01ce49535016610/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7a656e6e69742f616261633f63616368655365636f6e64733d333030)](LICENSE.md)[![Packagist Version](https://camo.githubusercontent.com/28948e85900597c2637ca6febcf9d375ec13e82b1aada62ac65dbcf525f1d9fe/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7a656e6e69742f616261633f63616368655365636f6e64733d333030)](https://packagist.org/packages/zennit/abac)

---

Installation
------------

[](#installation)

```
composer require zennit/abac
```

Publish config and run migrations:

```
php artisan vendor:publish --provider="zennit\ABAC\Providers\AbacServiceProvider"
php artisan migrate
```

---

Quick Start
-----------

[](#quick-start)

1. Add the middleware to protected routes:

```
Route::middleware(['web', 'abac'])->group(function () {
    Route::get('/posts/{post}', fn (Post $post) => $post);
});
```

2. Add a permission:

```
use zennit\ABAC\Facades\Abac;

Abac::addPermission('read', App\Models\Post::class, [
    'role' => 'editor',
    'resource.owner_id' => 123,
]);
```

3. Request is allowed when actor/resource attributes satisfy the grant constraints.

Artisan Commands
----------------

[](#artisan-commands)

The package registers utility commands for consumer setup:

```
php artisan abac:publish
php artisan abac:publish-config
php artisan abac:publish-env
php artisan abac:scaffold --from-routes
```

- `abac:publish` runs config + env publishing in one command.
- `abac:publish-config` publishes `config/abac.php`.
- `abac:publish-env` appends missing ABAC environment variables to a chosen env file.
- `abac:scaffold --from-routes` generates a starter policy JSON scaffold from `abac.middleware.resource_patterns`.

Seeding Permissions in Your App
-------------------------------

[](#seeding-permissions-in-your-app)

Seed permissions from your consuming application's seeders instead of package-provided seeders:

```
