Skip to content

moonshine-software/permissions

Repository files navigation

MoonShine Permission

Requirements

  • MoonShine v2.0+

Installation

composer require moonshine/permissions

Run migration

php artisan migrate

Get started

  1. Change MoonShineUser model in config/moonshine.php
use MoonShine\Permissions\Models\MoonshineUser;

return [
    // ...
    'auth' => [
        // ...
        'providers' => [
            'moonshine' => [
                'driver' => 'eloquent',
                'model' => MoonshineUser::class,
            ],
        ],
    ],
    // ...
];

Or add trait HasMoonShinePermissions to user model

use MoonShine\Permissions\Traits\HasMoonShinePermissions;

class MoonShineUser extends Model
{
    use HasMoonShinePermissions;
}
  1. Publish system resources
php artisan moonshine:publish
  1. Add trait WithPermissions to MoonShineUserResource
use MoonShine\Permissions\Traits\WithPermissions;

class MoonShineUserResource extends ModelResource
{
    use WithPermissions;

    public string $model = MoonShine\Permissions\Models\MoonshineUser::class;

    // ...
}

Example of condition to display in menu

use MoonShine\MoonShineRequest;

protected function menu(): array
{
    return [
        MenuItem::make('Posts', new PostResource())
            ->canSee(function (MoonShineRequest $request) {
                return $request->user()->isHavePermission(
                    PostResource::class,
                    'view'
                );
            }),
    ];
}