daliendev/permissiongroup

This package is abandoned and no longer maintained. The author suggests using the outl1ne/nova-permissions package instead.

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

0.0.2 2023-03-01 14:13 UTC

This package is auto-updated.

Last update: 2023-03-02 11:24:56 UTC


README

Prerequisites

  1. Laravel Nova 4 installed in your application
  2. 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:

Permission Group on Form page Permission Group on Detail page Permission Group on Index page

2023