PHPackages                             luminix/laravel-permission-integration - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Authentication &amp; Authorization](/categories/authentication)
4. /
5. luminix/laravel-permission-integration

ActiveLibrary[Authentication &amp; Authorization](/categories/authentication)

luminix/laravel-permission-integration
======================================

v0.0.5(1mo ago)07↓100%MITPHPPHP ^8.2

Since May 5Pushed 1w agoCompare

[ Source](https://github.com/luminix-cms/laravel-permission-integration)[ Packagist](https://packagist.org/packages/luminix/laravel-permission-integration)[ RSS](/packages/luminix-laravel-permission-integration/feed)WikiDiscussions v0.x Synced 1w ago

READMEChangelogDependencies (8)Versions (6)Used By (0)

Luminix Laravel Permission Integration
======================================

[](#luminix-laravel-permission-integration)

Integração do pacote [Spatie Laravel Permission](https://github.com/spatie/laravel-permission) com o framework [Luminix Backend](https://github.com/luminix-cms/backend), adicionando validação automática, observadores e descoberta de modelos.

Requisitos
----------

[](#requisitos)

- PHP 8.2+
- Laravel 11.x
- [`spatie/laravel-permission`](https://github.com/spatie/laravel-permission) ^6.24
- [`luminix/backend`](https://github.com/luminix-cms/backend)

Instalação
----------

[](#instalação)

```
composer require luminix/laravel-permission-integration
```

Configuração
------------

[](#configuração)

### Registrar os modelos na configuração de permissões

[](#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.

### Publicar a configuração do pacote

[](#publicar-a-configuração-do-pacote)

Para personalizar o comportamento do pacote, publique o arquivo de configuração:

```
php artisan vendor:publish --tag=luminix-config
```

Isso cria o arquivo `config/luminix/permission.php`:

Funcionalidades
---------------

[](#funcionalidades)

### Modelos estendidos

[](#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

[](#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

[](#permission)

- Valida os campos `name` e `guard_name` ao criar ou atualizar

### Sincronização de permissões em roles

[](#sincronização-de-permissões-em-roles)

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"]
}
```

### Sincronização de roles em modelos de usuário

[](#sincronização-de-roles-em-modelos-de-usuário)

Para modelos que utilizam a trait `HasRoles` do Spatie, as roles serão sincronizadas automaticamente:

```
PUT /luminix-api/users/1
{
    "name": "João",
    "roles": ["editor", "moderador"]
}
```

> **Observação:** a sincronização só ocorre para usuários que possuam a permissão definida em `luminix.permission.permission_to_set_roles` (padrão: `set-roles`). Defina como `null` para permitir a todos.

### Guards

[](#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

[](#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.

Limitações
----------

[](#limitações)

O pacote ainda não está preparado para lidar com as nuances de um sistema que usa múltiplas guardas. Por enquanto, é recomendado usar apenas em projetos onde apenas uma única guarda é usada.

Comandos
--------

[](#comandos)

### `luminix:api-permissions`

[](#luminixapi-permissions)

Cria as permissões CRUD para todos os modelos descobertos pelo Luminix Backend. Use este comando após adicionar novos modelos à aplicação para garantir que as permissões correspondentes existam no banco de dados.

```
php artisan luminix:api-permissions --guard=web
```

O comando aceita múltiplos guards:

```
php artisan luminix:api-permissions --guard=web --guard=api
```

Para cada modelo encontrado, o comando criará as permissões `create-{model}`, `read-{model}`, `update-{model}` e `delete-{model}`. O comando é idempotente — executá-lo múltiplas vezes não cria duplicatas.

**Exemplo** — para uma aplicação com os modelos `User`, `Post`, `Role` e `Permission`, o comando criaria:

```
create-user, read-user, update-user, delete-user
create-post, read-post, update-post, delete-post
create-role, read-role, update-role, delete-role
create-permission, read-permission, update-permission, delete-permission

```

Uso com usuários
----------------

[](#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('update-post');
```

Licença
-------

[](#licença)

MIT

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance96

Actively maintained with recent releases

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

6

Last Release

32d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/84a3afb785274d1c4712e7ed9fd924fe5dfd1f0c033e051f9d07d55df565920a?d=identicon)[obrunopolo](/maintainers/obrunopolo)

---

Top Contributors

[![obrunopolo](https://avatars.githubusercontent.com/u/47830258?v=4)](https://github.com/obrunopolo "obrunopolo (11 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/luminix-laravel-permission-integration/health.svg)

```
[![Health](https://phpackages.com/badges/luminix-laravel-permission-integration/health.svg)](https://phpackages.com/packages/luminix-laravel-permission-integration)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)[fleetbase/core-api

Core Framework and Resources for Fleetbase API

1232.2k16](/packages/fleetbase-core-api)[hasinhayder/tyro

Tyro - The ultimate Authentication, Authorization, and Role &amp; Privilege Management solution for Laravel 12 &amp; 13

6753.6k5](/packages/hasinhayder-tyro)[masterix21/laravel-licensing

Laravel licensing package with polymorphic assignment to any model, activation keys, expirations/renewals, and seat control via LicenseUsage. Supports offline verification with public-key–signed tokens, a CLI to generate/rotate/revoke keys, and an extensible architecture via config and contracts.

1432.1k4](/packages/masterix21-laravel-licensing)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
