luminix/laravel-permission-integration

Maintainers

Package info

github.com/luminix-cms/laravel-permission-integration

pkg:composer/luminix/laravel-permission-integration

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v0.0.2 2026-05-06 15:34 UTC

This package is auto-updated.

Last update: 2026-05-06 15:34:25 UTC


README

Integração do pacote Spatie Laravel Permission com o framework Luminix Backend, adicionando validação automática, observadores e descoberta de modelos.

Requisitos

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_name e o array de permissions ao 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 name e guard_name ao 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) ou update-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