PHPackages                             morphcms/acl-module - 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. morphcms/acl-module

ActiveLaravel-module[Authentication &amp; Authorization](/categories/authentication)

morphcms/acl-module
===================

Adds Roles &amp; Permissions features to Morph CMS

v0.0.0(3y ago)049PHP

Since Aug 1Pushed 3y agoCompare

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

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

Access Control List (ACL)
=========================

[](#access-control-list-acl)

TODO: Add installation and usage documentation.

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

[](#installation)

Usage
-----

[](#usage)

For authorization usage consult the package documentation for [spatie/laravel-permissions](https://spatie.be/docs/laravel-permission/v5/introduction).

### Convention

[](#convention)

The convention is `resource.permission` using the `.` as a separator.

The `*` is called a wildcard and represents all permissions of the resource.

The recommended approach is to create an `enum` per resource grouping its permissions. This provides a nice intellisense and reduces typos.

Example:

```
namespace Modules\Blog\Enums;

use Modules\Acl\Contracts\EnumsPermissions;

enum PostPermission: string
{
    case All = 'posts.*'; // wildcard permissions enabled by default
    case  ViewAdmin = 'posts.viewAdmin';
    case  ViewAny = 'posts.viewAny';
    case  View = 'posts.view';
    case  Create = 'posts.create';
    case  Update = 'posts.update';
    case  Delete = 'posts.delete';
    case  Replicate = 'posts.replicate';
    case  Restore = 'posts.restore';
}
```

Then use it in your policy, controller, etc. as:

```
$user->can(PostPermission::ViewAny->value);
// or obviously you can use it directly
$user->can('posts.viewAny');
```

### Seeding Permissions

[](#seeding-permissions)

Make use of the `AclBuilder` fluent API to create/attach permissions in your Seeder.

```
namespace Modules\Blog\Database\Seeders;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Seeder;
use Modules\Acl\Utils\AclSeederHelper;
use Modules\Blog\Enums\PostPermission;

class RolesAndPermissionsSeeder extends Seeder
{
    use AclSeederHelper;

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run(): void
    {
        Model::unguard();

        $this->acl(module: 'blog')
            ->attachEnum(permissions: PostPermission::class, onlyPermissions:  PostPermission::All->value)
            ->create(moduleRoles: 'blogger');

        // OR You can set permissions directly.

        $this->acl(module: 'blog')
            ->attach(permissions: [
                'posts.*',
                'posts.viewAdmin',
                'posts.viewAny',
                'posts.view',
                'posts.create',
                'posts.update',
                'posts.delete',
            ], onlyPermissions:  'posts.*')
            ->create(moduleRoles: 'blogger');
    }
}
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity8

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 Bus Factor1

Top contributor holds 87.5% 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

Unknown

Total

1

Last Release

1387d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f68765a77418f8056ef39ed2491f2b2b544a58166a462bf3d5f1332d539241d4?d=identicon)[codrin-axinte](/maintainers/codrin-axinte)

---

Top Contributors

[![TheAbsurdYes](https://avatars.githubusercontent.com/u/29465221?v=4)](https://github.com/TheAbsurdYes "TheAbsurdYes (7 commits)")[![codrin-axinte](https://avatars.githubusercontent.com/u/6564791?v=4)](https://github.com/codrin-axinte "codrin-axinte (1 commits)")

### Embed Badge

![Health badge](/badges/morphcms-acl-module/health.svg)

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

###  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)[backpack/permissionmanager

Users and permissions management interface for Laravel 5 using Backpack CRUD.

5591.8M16](/packages/backpack-permissionmanager)[vyuldashev/nova-permission

A Laravel Nova tool for Spatie's Permission library.

4332.5M3](/packages/vyuldashev-nova-permission)[kiritokatklian/nova-permission

A Laravel Nova tool for Spatie's Permission library.

791.1M3](/packages/kiritokatklian-nova-permission)[sereny/nova-permissions

Laravel Nova - Roles &amp; Permissions

86388.6k1](/packages/sereny-nova-permissions)

PHPackages © 2026

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