PHPackages                             tripteki/laravelphp-acl - 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. tripteki/laravelphp-acl

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

tripteki/laravelphp-acl
=======================

Trip Teknologi's Laravel.php ACLs

2.0.5(1y ago)0115MITPHPPHP ^8.0.2

Since Nov 14Pushed 1y agoCompare

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

READMEChangelog (10)Dependencies (6)Versions (13)Used By (0)

ACL
===

[](#acl)

This package provides implementation of Access Control List (ACL) Roles-Permissions in repository pattern for Lumen and Laravel besides REST API starterpack of admin management with no intervention to codebase and keep clean.

Getting Started
---------------

[](#getting-started)

Installation :

```
composer require tripteki/laravelphp-acl

```

How to use it :

- Read detail optional instruction here [Lumen](https://spatie.be/docs/laravel-permission/installation-lumen) or [Laravel](https://spatie.be/docs/laravel-permission/installation-laravel).
- Put to any of your model ruleable.

```
/**
 * @return array
 */
protected $dispatchesEvents = [

    "created" => \Tripteki\ACL\Events\Created::class,
    "deleted" => \Tripteki\ACL\Events\Deleted::class,
    "restored" => \Tripteki\ACL\Events\Created::class,
    "forceDeleted" => \Tripteki\ACL\Events\Deleted::class,
];
```

- Put `Tripteki\ACL\Providers\ACLServiceProvider` to service provider configuration list.
- Put `Tripteki\ACL\Providers\ACLServiceProvider::ignoreConfig()` into `register` provider, then publish config file into your project's directory with running :

```
php artisan vendor:publish --tag=tripteki-laravelphp-acl

```

- Put `Tripteki\ACL\Providers\ACLServiceProvider::ignoreMigrations()` into `register` provider, then publish migrations file into your project's directory with running (optionally) :

```
php artisan vendor:publish --tag=tripteki-laravelphp-acl-migrations

```

- Migrate.

```
php artisan migrate

```

- Emit Event-Listener.

```
php artisan queue:work

```

- Publish tests file into your project's directory with running (optionally) :

```
php artisan vendor:publish --tag=tripteki-laravelphp-acl-tests

```

- Sample :

```
use Tripteki\ACL\Contracts\Repository\Admin\IACLRoleRepository;
use Tripteki\ACL\Contracts\Repository\Admin\IACLPermissionRepository;
use Tripteki\ACL\Contracts\Repository\IACLRepository;

$roleRepository = app(IACLRoleRepository::class);
$permissionRepository = app(IACLPermissionRepository::class);

/*
 * As `{resource}`.`{action}`.`{target}` is representing :
 *
 * - {resource} : 'posts' = 'posts.*' = 'posts.*.*'
 * - {action} : 'viewAny', 'view', 'create', 'update', 'delete'
 * - {target} : '[identifier]'
 */

// $permissionRepository->rule("posts.update.*"); //
// $permissionRepository->unrule("posts.update.*"); //
// $permissionRepository->get("posts.update.*"); //
// $permissionRepository->all(); //

// $roleRepository->rule("admin"); //
// $roleRepository->rule("user"); //
// $roleRepository->unrule("admin"); //
// $roleRepository->unrule("user"); //
// $roleRepository->get("admin"); //
// $roleRepository->get("user"); //
// $roleRepository->all(); //

// $roleRepository->forRole("admin"); //
// $roleRepository->grant("posts.update.*"); //
// $roleRepository->revoke("posts.update.*"); //
// $roleRepository->ability("posts.update.*"); //
// $roleRepository->permissions(); //

$repository = app(IACLRepository::class);
// $repository->setUser(...); //
// $repository->getUser(); //

// $repository->grantAs("admin"); //
// $repository->revokeAs("admin"); //
// $repository->is("admin"); //
// $repository->permissions(); //
// $repository->grant("posts.update.5"); //
// $repository->revoke("posts.update.5"); //
// $repository->owns(); //
// $repository->owns(\App\Models\Post::class, 5); //
// $repository->can(iacl(\App\Models\Post::class, "update", 5)); //
// $repository->can("posts.update.5"); //
// auth()->user()->can("posts.update.5"); //
// auth()->user()->canAny([ "posts.update.5", ]); //
// auth()->user()->cant("posts.update.5"); //
// auth()->user()->cantAny([ "posts.update.5", ]); //
```

- Generate swagger files into your project's directory with putting this into your annotation configuration (optionally) :

```
base_path("app/Http/Controllers/ACL")

```

```
base_path("app/Http/Controllers/Admin/ACL")

```

Usage
-----

[](#usage)

`php artisan adminer:install:acl`

Author
------

[](#author)

- Trip Teknologi ([@tripteki](https://linkedin.com/company/tripteki))
- Hasby Maulana ([@hsbmaulana](https://linkedin.com/in/hsbmaulana))

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance37

Infrequent updates — may be unmaintained

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~31 days

Recently: every ~2 days

Total

12

Last Release

576d ago

Major Versions

1.1.8 → 2.0.02024-10-11

### Community

Maintainers

![](https://www.gravatar.com/avatar/3bcb25d4bbf5d664b8dd7cc7e5c194f876f54c994a1b3b9ebeaab370f577025a?d=identicon)[tripteki](/maintainers/tripteki)

---

Top Contributors

[![hsbmaulana](https://avatars.githubusercontent.com/u/38196994?v=4)](https://github.com/hsbmaulana "hsbmaulana (19 commits)")

---

Tags

bannet

### Embed Badge

![Health badge](/badges/tripteki-laravelphp-acl/health.svg)

```
[![Health](https://phpackages.com/badges/tripteki-laravelphp-acl/health.svg)](https://phpackages.com/packages/tripteki-laravelphp-acl)
```

###  Alternatives

[bezhansalleh/filament-shield

Filament support for `spatie/laravel-permission`.

2.8k2.9M88](/packages/bezhansalleh-filament-shield)[althinect/filament-spatie-roles-permissions

340954.7k9](/packages/althinect-filament-spatie-roles-permissions)[binary-cats/laravel-rbac

Laravel enum-backed RBAC extension of spatie/laravel-permission

7730.4k](/packages/binary-cats-laravel-rbac)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
