PHPackages                             charlielangridge/nova-permission - 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. charlielangridge/nova-permission

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

charlielangridge/nova-permission
================================

A Laravel Nova tool for Spatie's Permission library.

v4.0.4(3y ago)012MITPHPPHP ^7.4|^8.0|^8.1

Since Sep 20Pushed 3y agoCompare

[ Source](https://github.com/charlielangridge/nova-permission)[ Packagist](https://packagist.org/packages/charlielangridge/nova-permission)[ RSS](/packages/charlielangridge-nova-permission/feed)WikiDiscussions master Synced 1mo ago

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

A Laravel Nova tool for Spatie's laravel-permission library
===========================================================

[](#a-laravel-nova-tool-for-spaties-laravel-permission-library)

[![Latest Version on Packagist](https://camo.githubusercontent.com/b7262833d17185e9852f6d4222ed56abff592962c940cf029574b33c375dbf19/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6b697269746f6b61746b6c69616e2f6e6f76612d7065726d697373696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/kiritokatklian/nova-permission)[![Total Downloads](https://camo.githubusercontent.com/93189ee3da45e809d681785b79c91210a934596f016210e6175aa60539a2ecbb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6b697269746f6b61746b6c69616e2f6e6f76612d7065726d697373696f6e2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/kiritokatklian/nova-permission)

[![screenshot 1](https://raw.githubusercontent.com/kiritokatklian/nova-permission/master/docs/user-resource.png)](https://raw.githubusercontent.com/kiritokatklian/nova-permission/master/docs/user-resource.png)

Note
----

[](#note)

Credits to [vyuldashev](https://github.com/vyuldashev). Since the original package hasn't been updated for a while now and there's no sign from vyuldashev, I created this fork with all the latest changes. I use this mainly in my projects, but feel welcome to use it as well. PRs are also welcome.

Version Compatibility
---------------------

[](#version-compatibility)

With the release of Nova 4.0, there are now two separate versions of Nova Permissions. Unfortuantly due to the nature of the update, the new one isn't backwards copmatible. So please choose your version accordingly.

Laravel NovaNova Permission3.03.0 - 3.2.24.04.0Installation
------------

[](#installation)

You can install the package in to a Laravel project that uses [Nova](https://nova.laravel.com) via composer:

```
composer require kiritokatklian/nova-permission
```

Go through the [Installation](https://github.com/spatie/laravel-permission#installation) section in order to setup [laravel-permission](https://packagist.org/packages/spatie/laravel-permission).

Next up, you must register the tool with Nova. This is typically done in the `tools` method of the `NovaServiceProvider`.

```
// in app/Providers/NovaServiceProvider.php

// ...

public function tools()
{
    return [
        // ...
        \Vyuldashev\NovaPermission\NovaPermissionTool::make(),
    ];
}
```

Next, add middleware to `config/nova.php`

```
// in config/nova.php
'middleware' => [
    // ...
    \Vyuldashev\NovaPermission\ForgetCachedPermissions::class,
],
```

Finally, add `MorphToMany` fields to you `app/Nova/User` resource:

```
// ...
use Laravel\Nova\Fields\MorphToMany;

public function fields(Request $request)
{
    return [
        // ...
        MorphToMany::make('Roles', 'roles', \Vyuldashev\NovaPermission\Role::class),
        MorphToMany::make('Permissions', 'permissions', \Vyuldashev\NovaPermission\Permission::class),
    ];
}
```

Or if you want to attach multiple permissions at once, use `RoleBooleanGroup` and `PermissionBooleanGroup` fields (requires at least Nova 2.6.0):

```
// ...
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
use Vyuldashev\NovaPermission\RoleBooleanGroup;

public function fields(Request $request)
{
    return [
        // ...
        RoleBooleanGroup::make('Roles'),
        PermissionBooleanGroup::make('Permissions'),
    ];
}
```

If your `User` could have a single role at any given time, you can use `RoleSelect` field. This field will render a standard select where you can pick a single role from.

```
// ...
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
use Vyuldashev\NovaPermission\RoleSelect;

public function fields(Request $request)
{
    return [
        // ...
        RoleSelect::make('Role', 'roles'),
    ];
}
```

Customization
-------------

[](#customization)

If you want to use custom resource classes you can define them when you register a tool:

```
// in app/Providers/NovaServiceProvider.php

// ...

public function tools()
{
    return [
        // ...
        \Vyuldashev\NovaPermission\NovaPermissionTool::make()
            ->roleResource(CustomRole::class)
            ->permissionResource(CustomPermission::class),
    ];
}
```

If you want to show your roles and policies with a custom label, you can set `$labelAttribute` when instantiating your fields:

```
// ...
use Vyuldashev\NovaPermission\PermissionBooleanGroup;
use Vyuldashev\NovaPermission\RoleSelect;

public function fields(Request $request)
{
    return [
        // ...
        RoleBooleanGroup::make('Roles', 'roles', null, 'description'),
        PermissionBooleanGroup::make('Permissions', 'permissions', null, 'description'),
        RoleSelect::make('Role', 'roles', null, 'description'),
    ];
}
```

Define Policies
---------------

[](#define-policies)

```
// in app/Providers/NovaServiceProvider.php

// ...

public function tools()
{
    return [
        // ...
        \Vyuldashev\NovaPermission\NovaPermissionTool::make()
            ->rolePolicy(RolePolicy::class)
            ->permissionPolicy(PermissionPolicy::class),
    ];
}
```

Usage
-----

[](#usage)

A new menu item called "Permissions &amp; Roles" will appear in your Nova app after installing this package.

###  Health Score

26

—

LowBetter than 43% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity5

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

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

1330d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f4c3198a248b9580414af6bd9a09b66c8307b409de14b5bbec32140974323474?d=identicon)[charlielangridge](/maintainers/charlielangridge)

---

Top Contributors

[![vyuldashev](https://avatars.githubusercontent.com/u/1809081?v=4)](https://github.com/vyuldashev "vyuldashev (89 commits)")[![kiritokatklian](https://avatars.githubusercontent.com/u/6556281?v=4)](https://github.com/kiritokatklian "kiritokatklian (16 commits)")[![nalingia](https://avatars.githubusercontent.com/u/5793125?v=4)](https://github.com/nalingia "nalingia (6 commits)")[![Kussie](https://avatars.githubusercontent.com/u/4960791?v=4)](https://github.com/Kussie "Kussie (5 commits)")[![Reflow1319](https://avatars.githubusercontent.com/u/6665500?v=4)](https://github.com/Reflow1319 "Reflow1319 (5 commits)")[![gnanakeethan](https://avatars.githubusercontent.com/u/2353181?v=4)](https://github.com/gnanakeethan "gnanakeethan (4 commits)")[![SiebeVE](https://avatars.githubusercontent.com/u/14889418?v=4)](https://github.com/SiebeVE "SiebeVE (4 commits)")[![charlielangridge](https://avatars.githubusercontent.com/u/8578083?v=4)](https://github.com/charlielangridge "charlielangridge (3 commits)")[![mxm1070](https://avatars.githubusercontent.com/u/11588575?v=4)](https://github.com/mxm1070 "mxm1070 (3 commits)")[![shalawani](https://avatars.githubusercontent.com/u/7045417?v=4)](https://github.com/shalawani "shalawani (3 commits)")[![stepanenko3](https://avatars.githubusercontent.com/u/31134245?v=4)](https://github.com/stepanenko3 "stepanenko3 (2 commits)")[![johnpaulmedina](https://avatars.githubusercontent.com/u/1139439?v=4)](https://github.com/johnpaulmedina "johnpaulmedina (2 commits)")[![letrams](https://avatars.githubusercontent.com/u/6623497?v=4)](https://github.com/letrams "letrams (2 commits)")[![IGedeon](https://avatars.githubusercontent.com/u/694313?v=4)](https://github.com/IGedeon "IGedeon (2 commits)")[![erhansogut](https://avatars.githubusercontent.com/u/1370493?v=4)](https://github.com/erhansogut "erhansogut (2 commits)")[![drbyte](https://avatars.githubusercontent.com/u/404472?v=4)](https://github.com/drbyte "drbyte (2 commits)")[![marcorivm](https://avatars.githubusercontent.com/u/1222598?v=4)](https://github.com/marcorivm "marcorivm (1 commits)")[![ashgibson](https://avatars.githubusercontent.com/u/1744544?v=4)](https://github.com/ashgibson "ashgibson (1 commits)")[![dividy](https://avatars.githubusercontent.com/u/19650505?v=4)](https://github.com/dividy "dividy (1 commits)")[![fkeloks](https://avatars.githubusercontent.com/u/16477784?v=4)](https://github.com/fkeloks "fkeloks (1 commits)")

---

Tags

laravelnovaspatie-permission

### Embed Badge

![Health badge](/badges/charlielangridge-nova-permission/health.svg)

```
[![Health](https://phpackages.com/badges/charlielangridge-nova-permission/health.svg)](https://phpackages.com/packages/charlielangridge-nova-permission)
```

###  Alternatives

[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)[itsmejoshua/novaspatiepermissions

Laravel Nova tool for managing spaties roles/permissions in laravel's nova package.

30262.5k](/packages/itsmejoshua-novaspatiepermissions)

PHPackages © 2026

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