Download the PHP package pktharindu/nova-permissions without Composer
On this page you can find all versions of the php package pktharindu/nova-permissions. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download pktharindu/nova-permissions
More information about pktharindu/nova-permissions
Files in pktharindu/nova-permissions
Package nova-permissions
Short Description Laravel Nova Grouped Permissions (ACL)
License MIT
Informations about the package nova-permissions
Laravel Nova Grouped Permissions (RBAC)
Add Permissions based authorization for your Nova installation via Role-Based Access Control (RBAC). Roles are defined in the database whereas Permissions are defined in the code base. It allows you to group your Permissions into Groups and attach it to Users.
Nova 4 | v3.x |
---|---|
<= Nova 3 | v2.x |
If you like this package, show some love by starring the repo. 🙏
This package is inspired by Silvanite\Brandenburg as it has clear separation of concerns.
Roles are defined in the Database
and
Permissions are defined in the Codebase
As a result, you won't see any Permissions resource. The Roles resource will get the permissions from the Gates defined in your code.
- Laravel Nova Grouped Permissions (RBAC)
- Installation
- Permissions with Groups
- Index View
- Detail View
- Edit View
- Usage
- Create a Model Policy
- Customization
- Use your own Resources
- Support
- Credits
- License
Installation
You can install the package in to a Laravel app that uses Nova via composer:
Publish the Configuration with the following command:
Configuration file includes some dummy permissions for your refference. Feel free to remove them and add your own permissions.
Publish the Migration with the following command:
Migrate the Database:
Next up, you must register the tool with Nova. This is typically done in the tools
method of the NovaServiceProvider
.
Create a new policy:
After that, register the RolePolicy
along with any other policies you may have and define the gates in the boot
method of the AuthServiceProvider
like below.
Then, use HasRoles
Traits in your User
model.
Finally, add BelongsToMany
fields to you app/Nova/User
resource:
A new resource called Roles will appear in your Nova app after installing this package.
Permissions with Groups
Index View
Detail View
Edit View
Usage
Create a Model Policy
To check permissions, you can create Model Policies
that works with Laravel Nova.
Note: This package doesn't come with any
Model Policies
built-in. The dummy permissions defined in the config are for your reference only. For eachNova Resource
including theRole
andUser
resources, that you want to authorize user actions against, you need to create a Model Policy. Please refer to the Laravel Docs and Laravel Nova Docs for additional information.
For Example: Create a new Post Policy with php artisan make:policy PostPolicy
with the following code:
It should now work as exptected. Just create a Role, modify its Permissions and the Policy should take care of the rest.
Note: Don't forget to add your Policy to your
$policies
inApp\Providers\AuthServiceProvider
and define the permissions inconfig\nova-permissions.php
.
hasPermissionTo()
method determine if any of the assigned roles to this user have a specific permission.
hasAnyPermission()
method determine if the model has any of the given permissions.
hasAllPermissions()
method determine if the model has all of the given permissions.
view own posts
is superior toview posts
and allows the User to only view his own posts.
manage own posts
is superior tomanage posts
and allows the User to only manage his own posts.
Customization
Use your own Resources
If you want to use your own role resource, you can define it when you register the tool:
Then extend the Pktharindu\NovaPermissions\Nova\Role
in your role resource:
Support
If you require any support please contact me on Twitter or open an issue on this repository.
Credits
This Package is inspired by eminiarts/nova-permissions and silvanite/novatoolpermissions. I wanted to have a combination of both. Thanks to both authors.
License
Copyright © 2018-2020 P. K. Tharindu and contributors
Licensed under the MIT license, see LICENSE for details.