PHP code example of gsebastiao / laravel-authz

1. Go to this page and download the library: Download gsebastiao/laravel-authz library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

gsebastiao / laravel-authz example snippets


if ($user->hasPermission('financeiro.aprovar')) {
    // mostra o botão "Aprovar"
}

// app/Models/User.php
use Gsebastiao\LaravelAuthz\Traits\HasAuthz;

class User extends Authenticatable
{
    use HasAuthz;

    // ...
}

'permissions' => [
    'financeiro.ver',
    'financeiro.aprovar',
],

use Gsebastiao\LaravelAuthz\Facades\Authz;

$financeiro = Authz::createGroup('Financeiro', 'Equipe do financeiro');

Authz::grantPermissionToGroup($financeiro, Authz::resolvePermissionId('financeiro.ver'));
Authz::grantPermissionToGroup($financeiro, Authz::resolvePermissionId('financeiro.aprovar'));

$user = User::find(1);

$user->assignRole('Financeiro');

$user->hasRole('Financeiro');              // true
$user->hasPermission('financeiro.aprovar'); // true
$user->can('financeiro.aprovar');           // true (integração com o Gate do Laravel)
$user->hasPermission('rh.ver');             // false

// Precisa desta permissão
Route::get('/pagamentos', ...)->middleware('authz.permission:financeiro.ver');

// Precisa de UMA delas (separe com |)
Route::get('/relatorios', ...)->middleware('authz.permission:financeiro.ver|rh.ver');

// Precisa de TODAS (separe com vírgula)
Route::post('/pagamentos/aprovar', ...)->middleware('authz.permission:financeiro.ver,financeiro.aprovar');

// Por grupo, com a mesma sintaxe
Route::get('/diretoria', ...)->middleware('authz.role:Diretoria');

// AppServiceProvider::boot()
Gate::before(fn ($user) => $user->hasRole('Admin') ? true : null);

Authz::grantPermissionToGroup($estagiarios, $aprovarId, [
    'is_granted' => false,  // nega
    'is_absolute' => true,  // e vence os outros grupos
]);

// Acesso temporário: só até o fim do ano
$user->assignRole('Auditoria', ['end_date' => '2026-12-31']);

// Acesso que começa no futuro
$user->grantPermission('financeiro.aprovar', ['start_date' => '2026-10-01']);

'permissions' => [
    'financeiro.ver',
    [
        'permission' => 'financeiro.aprovar',
        'label' => 'Aprovar pagamentos',
        'description' => 'Permite aprovar pagamentos acima de 10 mil',
        'order' => 10,
    ],
],

namespace App\Support;

use Gsebastiao\LaravelAuthz\Contracts\TenantContext;

class TenantAtual implements TenantContext
{
    public function id(): int|string|null
    {
        return auth()->user()?->empresa_id; // ou sessão, subdomínio...
    }
}

Authz::getAuditTrail('groups', $groupId); // histórico de um grupo

// "Criado por / em" numa listagem, sem N+1:
Authz::applyAuditJoins('groups', DB::table('auth_groups'))->get();

Authz::getUserGroups($user->id);
Authz::getEffectivePermissions($user->id, \Gsebastiao\LaravelAuthz\Enums\PermissionFormat::Permission);
bash
php artisan authz:install
bash
php artisan authz:sync-permissions
bash
php artisan authz:cache-reset