Files
rkm-conectasus-ci-sandbox/api/app/Http/Middleware/Gate.php
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

47 lines
1.8 KiB
PHP

<?php
namespace App\Http\Middleware;
use App\Models\Administracao\Permissao;
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
use Closure;
use Exception;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Gate as BaseGate;
class Gate
{
public function handle(Request $request, Closure $next)
{
try {
DB::table('administracao_endpoint_acao')
->select(
'administracao_permissao.id',
'administracao_modulo.identificador as modulo_identificador',
'administracao_funcionalidade.identificador as funcionalidade_identificador',
'administracao_endpoint_acao.nome as acao_nome',
)
->join('administracao_permissao', 'administracao_permissao.id', 'administracao_endpoint_acao.permissao_id')
->join('administracao_funcionalidade', 'administracao_funcionalidade.id', 'administracao_permissao.funcionalidade_id')
->join('administracao_modulo', 'administracao_modulo.id', 'administracao_funcionalidade.modulo_id')
->get()
->each(function($permissao) {
$gateName = "{$permissao->acao_nome}-{$permissao->modulo_identificador}-{$permissao->funcionalidade_identificador}";
BaseGate::define($gateName, function () use ($permissao) {
$lotacao = Lotacao::find(auth()->payload()->get('lotacao_id'));
return $lotacao->hasPermissao(Permissao::find($permissao->id));
});
});
}
catch (Exception $error) {
// TODO: Verificar qual exception é lançada e fazer o tratamento dos erros.
}
return $next($request);
}
}