daliendev / permissiongroup
Permission Group for Laravel Nova allows for the management of various permission values within a single JSON column.
Installs: 19
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:Vue
Type:package
Requires
- php: ^8.2
README
Prerequisites
- Laravel Nova 4 installed in your application
- Composer installed on your system
Installation
composer require daliendev/permissiongroup
Prepare your migrations
You will need a column in JSON format.
class CreateRolesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('roles', function (Blueprint $table) { ... $table->json('permissions')->nullable(); ... }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('roles'); } }
Basic Usage
To use the PermissionGroup field in your Nova application, you need to add the field to your Nova resource. To do this, simply add the following code:
use Daliendev\PermissionGroup public function fields(Request $request) { return [ ... PermissionGroup::make('Permissions', 'permissions') ->on(User::class) ->on(Role::class) ... ]; }
This will display two CRUD oriented BooleanGroups and all the value will be stored in same {permissions} attribute/column of your model.
Custom permissions can also be specified (in addition to the CRUD on a resource and as an independent group):
PermissionGroup::make('Permissions', 'permissions') ->on(User::class, [ 'test' => 'Test' ]) ->on(Role::class) ->with('Other', [ 'can_view_secret_page' => 'can view secret page' ]) ->with('Other2', [ 'can_view_logs' => 'can view logs' ]),
So permissions column of your role can store as much value as needed in JSON format:
["can_view_role", "can_view_user", "can_view_logs_other", "test_user"]
As all Laravel Nova Fields the following methods may be used to show / hide fields based on the display context:
showOnIndex
showOnDetail
showOnCreating
showOnUpdating
showOnPreview
showWhenPeeking
hideFromIndex
hideFromDetail
hideWhenCreating
hideWhenUpdating
onlyOnIndex
onlyOnDetail
onlyOnForms
exceptOnForms
For more details please refer to related Laravel Nova documentation page.
Some example screenshots:
2023