commit13
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace Tempo\Purchasing\Delivery;
|
||||
|
||||
use App\Shared\Context\CompanyContext;
|
||||
use App\Shared\Context\ModuleNavigation;
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
final class RuntimeContext
|
||||
{
|
||||
public function handle(Request $request, Closure $next): mixed
|
||||
{
|
||||
abort_unless(config('purchasing-operational.enabled') === true, 404);
|
||||
$context = app(CompanyContext::class);
|
||||
Installation::assertBudgetReady(DB::connection());
|
||||
$scope = $context->identifiers();
|
||||
$policy = config('modules.companies.'.$scope['tenant_id'].':'.$scope['company_id'], []);
|
||||
$contracted = $policy['contracted'] ?? config('modules.contracted', []);
|
||||
abort_unless(in_array('purchasing', $contracted, true) && in_array('purchasing', $policy['enabled'] ?? $contracted, true), 403);
|
||||
$initialisation = $request->is('purchasing/internal-requisitions/access-initialisation', 'api/internal-requisitions/access-initialisation');
|
||||
if (! $initialisation) {
|
||||
abort_unless($request->session()->get('company_context.module_id') === 'purchasing', 409, 'Seleccione o módulo Compras.');
|
||||
abort_unless(in_array('purchasing', array_column(app(ModuleNavigation::class)->available($context), 'id'), true), 403);
|
||||
}
|
||||
if ($request->is('api/*')) {
|
||||
$token = (string) $request->session()->get('company_context.token', '');
|
||||
abort_unless($token !== '' && hash_equals($token, (string) $request->header('X-SGF-Context')), 409);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user