39 lines
1.5 KiB
PHP
39 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
/**
|
|
* Гейт SaaS-admin зоны (/api/admin/*) — audit-находка J2.
|
|
*
|
|
* СТАБ (Sprint 3F): полноценная авторизация saas-admin требует Yandex 360
|
|
* SSO-входа, который гейтится Б-1 (регистрация ООО) + DO-4. До их закрытия
|
|
* реального механизма аутентификации нет.
|
|
*
|
|
* Поведение стаба:
|
|
* - dev / testing (local, testing) → пропускаем. Admin-панель работает на
|
|
* dev; admin_user_id передаётся параметром (трейт ResolvesAdminUserId).
|
|
* - прочие окружения (production / staging) → fail-closed 503: зона
|
|
* закрыта до подключения реального SSO. Явный 503 лучше, чем тихо
|
|
* открытый /api/admin/* в проде.
|
|
*
|
|
* TODO (после Б-1 + DO-4): заменить на проверку Yandex 360 SSO-сессии
|
|
* saas-admin (отдельный guard) + роль (compliance и т.п. где требуется).
|
|
*/
|
|
class EnsureSaasAdmin
|
|
{
|
|
public function handle(Request $request, Closure $next): Response
|
|
{
|
|
if (! app()->environment('local', 'testing')) {
|
|
abort(503, 'SaaS-admin авторизация не настроена (ожидает Б-1 + DO-4).');
|
|
}
|
|
|
|
return $next($request);
|
|
}
|
|
}
|