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;
// ...
}
$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');
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']);
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();