{"id":37234651,"url":"https://github.com/kiritokatklian/nova-permission","last_synced_at":"2026-01-15T04:00:09.285Z","repository":{"id":40276155,"uuid":"460404822","full_name":"kiritokatklian/nova-permission","owner":"kiritokatklian","description":"A Laravel Nova tool for Spatie's laravel-permission library","archived":false,"fork":true,"pushed_at":"2025-11-09T22:20:52.000Z","size":1210,"stargazers_count":78,"open_issues_count":1,"forks_count":21,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-01-14T14:35:48.395Z","etag":null,"topics":["laravel-nova","laravel-nova-3","laravel-nova-4","nova","permissions","spatie-laravel","spatie-laravel-permission"],"latest_commit_sha":null,"homepage":"https://novapackages.com/packages/vyuldashev/nova-permission","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"vyuldashev/nova-permission","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kiritokatklian.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-02-17T11:24:21.000Z","updated_at":"2025-11-27T21:17:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kiritokatklian/nova-permission","commit_stats":null,"previous_names":[],"tags_count":68,"template":false,"template_full_name":null,"purl":"pkg:github/kiritokatklian/nova-permission","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritokatklian%2Fnova-permission","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritokatklian%2Fnova-permission/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritokatklian%2Fnova-permission/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritokatklian%2Fnova-permission/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kiritokatklian","download_url":"https://codeload.github.com/kiritokatklian/nova-permission/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kiritokatklian%2Fnova-permission/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28442357,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-15T00:55:22.719Z","status":"online","status_checked_at":"2026-01-15T02:00:08.019Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["laravel-nova","laravel-nova-3","laravel-nova-4","nova","permissions","spatie-laravel","spatie-laravel-permission"],"created_at":"2026-01-15T04:00:08.708Z","updated_at":"2026-01-15T04:00:09.267Z","avatar_url":"https://github.com/kiritokatklian.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A Laravel Nova tool for Spatie's laravel-permission library\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/kiritokatklian/nova-permission.svg?style=flat-square)](https://packagist.org/packages/kiritokatklian/nova-permission)\n[![Total Downloads](https://img.shields.io/packagist/dt/kiritokatklian/nova-permission.svg?style=flat-square)](https://packagist.org/packages/kiritokatklian/nova-permission)\n\n![screenshot 1](https://raw.githubusercontent.com/kiritokatklian/nova-permission/master/docs/user-resource.png)\n\n## Note\n\nCredits 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.\n\n## Version Compatibility\n\nWith 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.\n\n| Laravel Nova | Nova Permission |\n| :---: | :---: |\n| 3.0 | 3.0 - 3.2.2 |\n| 4.0 | 4.0 |\n| 5.0 | 5.0 |\n\n## Installation\n\nYou can install the package in to a Laravel project that uses [Nova](https://nova.laravel.com) via composer:\n\n```bash\ncomposer require kiritokatklian/nova-permission\n```\n\nGo through the [Installation](https://github.com/spatie/laravel-permission#installation) section in order to setup [laravel-permission](https://packagist.org/packages/spatie/laravel-permission).\n\nNext up, you must register the tool with Nova. This is typically done in the `tools` method of the `NovaServiceProvider`.\n\n```php\n// in app/Providers/NovaServiceProvider.php\n\n// ...\n\npublic function tools()\n{\n    return [\n        // ...\n        \\Vyuldashev\\NovaPermission\\NovaPermissionTool::make(),\n    ];\n}\n```\n\nNext, add middleware to `config/nova.php`\n\n```php\n// in config/nova.php\n'middleware' =\u003e [\n    // ...\n    \\Vyuldashev\\NovaPermission\\ForgetCachedPermissions::class,\n],\n```\n\nFinally, add `MorphToMany` fields to you `app/Nova/User` resource:\n\n```php\n// ...\nuse Laravel\\Nova\\Fields\\MorphToMany;\n\npublic function fields(Request $request)\n{\n    return [\n        // ...\n        MorphToMany::make('Roles', 'roles', \\Vyuldashev\\NovaPermission\\Role::class),\n        MorphToMany::make('Permissions', 'permissions', \\Vyuldashev\\NovaPermission\\Permission::class),\n    ];\n}\n```\n\nOr if you want to attach multiple permissions at once, use `RoleBooleanGroup` and `PermissionBooleanGroup` fields (requires at least Nova 2.6.0):\n\n```php\n// ...\nuse Vyuldashev\\NovaPermission\\PermissionBooleanGroup;\nuse Vyuldashev\\NovaPermission\\RoleBooleanGroup;\n\npublic function fields(Request $request)\n{\n    return [\n        // ...\n        RoleBooleanGroup::make('Roles'),\n        PermissionBooleanGroup::make('Permissions'),\n    ];\n}\n```\n\nIf 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.\n\n```php\n// ...\nuse Vyuldashev\\NovaPermission\\PermissionBooleanGroup;\nuse Vyuldashev\\NovaPermission\\RoleSelect;\n\npublic function fields(Request $request)\n{\n    return [\n        // ...\n        RoleSelect::make('Role', 'roles'),\n    ];\n}\n```\n\n## Customization\n\nIf you want to use custom resource classes you can define them when you register a tool:\n\n```php\n// in app/Providers/NovaServiceProvider.php\n\n// ...\n\npublic function tools()\n{\n    return [\n        // ...\n        \\Vyuldashev\\NovaPermission\\NovaPermissionTool::make()\n            -\u003eroleResource(CustomRole::class)\n            -\u003epermissionResource(CustomPermission::class),\n    ];\n}\n\n```\n\nIf you want to show your roles and policies with a custom label, you can set `$labelAttribute` when instantiating your fields:\n\n```php\n// ...\nuse Vyuldashev\\NovaPermission\\PermissionBooleanGroup;\nuse Vyuldashev\\NovaPermission\\RoleSelect;\n\npublic function fields(Request $request)\n{\n    return [\n        // ...\n        RoleBooleanGroup::make('Roles', 'roles', null, 'description'),\n        PermissionBooleanGroup::make('Permissions', 'permissions', null, 'description'),\n        RoleSelect::make('Role', 'roles', null, 'description'),\n    ];\n}\n```\n\n\n## Define Policies \n\n```php\n// in app/Providers/NovaServiceProvider.php\n\n// ...\n\npublic function tools()\n{\n    return [\n        // ...\n        \\Vyuldashev\\NovaPermission\\NovaPermissionTool::make()\n            -\u003erolePolicy(RolePolicy::class)\n            -\u003epermissionPolicy(PermissionPolicy::class),\n    ];\n}\n\n```\n\n## Usage\n\nA new menu item called \"Permissions \u0026 Roles\" will appear in your Nova app after installing this package.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiritokatklian%2Fnova-permission","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkiritokatklian%2Fnova-permission","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkiritokatklian%2Fnova-permission/lists"}