luminix / laravel-permission-integration
Package info
github.com/luminix-cms/laravel-permission-integration
pkg:composer/luminix/laravel-permission-integration
Requires
- php: ^8.2
- illuminate/database: ^11.0
- illuminate/support: ^11.0
- luminix/backend: v1.x-dev
- luminix/frontend: v1.x-dev
- spatie/laravel-permission: ^6.24
Requires (Dev)
- nunomaduro/collision: ^8.0
- orchestra/testbench: ^9.0
- phpunit/phpunit: ~11.0
README
Integração do pacote Spatie Laravel Permission com o framework Luminix Backend, adicionando validação automática, observadores e descoberta de modelos.
Requisitos
- PHP 8.2+
- Laravel 11.x
spatie/laravel-permission^6.24luminix/backend
Instalação
composer require luminix/laravel-permission-integration
Configuração
Registrar os modelos na configuração de permissões
Após instalar o pacote, você precisa informar ao Spatie Laravel Permission que deve utilizar os modelos fornecidos por este pacote. Publique o arquivo de configuração do Spatie (caso ainda não o tenha feito) e registre os modelos:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
Em seguida, edite o arquivo config/permission.php e altere a seção models:
// config/permission.php use Luminix\LaravelPermissionIntegration\Models\Permission; use Luminix\LaravelPermissionIntegration\Models\Role; return [ 'models' => [ 'permission' => Permission::class, 'role' => Role::class, ], // ...restante da configuração ];
Importante: sem este passo, o pacote não funcionará corretamente — os modelos padrão do Spatie serão utilizados no lugar dos modelos estendidos por esta integração.
Funcionalidades
Modelos estendidos
Os modelos Role e Permission estendem os modelos padrão do Spatie e adicionam:
- Validação automática via atributo PHP
#[WithValidator] - Observadores via atributo PHP
#[ObservedBy] - Integração com o Luminix Backend através da trait
LuminixModel
Role
- Valida os campos
name,guard_namee o array depermissionsao criar ou atualizar - Sincroniza automaticamente as permissões associadas ao salvar (via
RoleObserver) - Eager-loading de permissões via escopo
scopeBeforeLuminix
Permission
- Valida os campos
nameeguard_nameao criar ou atualizar
Sincronização de permissões
Ao salvar uma função (role) com um array de permissões no corpo da requisição, o observador sincroniza automaticamente as permissões associadas:
Observação: a associação de permissões só estará disponível para usuários que possuam autorização para
create-role(ao criar) ouupdate-role(ao atualizar).
POST /luminix-api/roles { "name": "editor", "guard_name": "web", "permissions": ["create-post", "update-post"] }
Guards
O campo guard_name é validado contra os guards configurados em config/auth.php. Para acessar os guards disponíveis programaticamente:
use Luminix\LaravelPermissionIntegration\Facades\Integration; $guards = Integration::getAvailableGuards();
Descoberta de modelos
O PermissionServiceProvider registra automaticamente os modelos Role e Permission no ModelFinder do Luminix Backend, tornando-os disponíveis para as operações CRUD geradas pelo framework.
Uso com usuários
Este pacote é compatível com todos os recursos do Spatie Laravel Permission. Adicione a trait HasRoles ao seu model de usuário:
use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable { use HasRoles; }
Em seguida, utilize normalmente:
$user->assignRole('editor'); $user->hasRole('editor'); $user->can('udpate-post');
Licença
MIT