MoonShine MoonShine
EN
← All plugins

MoonShine Permission

Made by the authors of MoonShine

MoonShine Permission - это пакет для системы управления правами доступа в админ-панели MoonShine v2.0+, который позволяет гибко настраивать разрешения для пользователей через встроенные трейты и модели, а также контролировать доступ к различным разделам админки.

Rating
Downloads
4551
Version
2.0.3
Last updated
04.02.2025
MoonShine version
v2, v3
Github stars
9
MoonShine Software
Author
MoonShine Software

MoonShine Permission

Requirements

  • MoonShine v2.0+

Installation

composer require moonshine/permissions
composer require moonshine/permissions

Run migration

php artisan migrate
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,
],
],
],
// ...
];
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;
}
use MoonShine\Permissions\Traits\HasMoonShinePermissions;
 
class MoonShineUser extends Model
{
use HasMoonShinePermissions;
}
  1. Publish system resources
php artisan moonshine:publish
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;
 
// ...
}
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'
);
}),
];
}
use MoonShine\MoonShineRequest;
 
protected function menu(): array
{
return [
MenuItem::make('Posts', new PostResource())
->canSee(function (MoonShineRequest $request) {
return $request->user()->isHavePermission(
PostResource::class,
'view'
);
}),
];
}