first commit

This commit is contained in:
brusnitsyn
2026-06-24 17:20:43 +09:00
commit 43499acf1c
165 changed files with 25929 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
/**
* Проверка прохождения второго фактора аутентификации в текущей сессии.
*
* Мера ФСТЭК: ИАФ.4 многофакторная аутентификация (обязательна для УЗ-1).
*
* Логика:
* - если MFA не требуется конфигурацией пропускаем;
* - если у пользователя не настроен второй фактор отправляем на настройку;
* - если фактор настроен, но не подтверждён в сессии на ввод кода.
*/
class EnsureMfaIsVerified
{
public function handle(Request $request, Closure $next): Response
{
$user = $request->user();
if ($user === null || ! config('security.mfa.required')) {
return $next($request);
}
if (! $user->hasMfaEnabled()) {
if ($request->routeIs('mfa.setup', 'mfa.enable', 'logout')) {
return $next($request);
}
return redirect()->route('mfa.setup');
}
if (! $request->session()->get('mfa.verified', false)) {
if ($request->routeIs('mfa.challenge', 'mfa.verify', 'logout')) {
return $next($request);
}
return redirect()->route('mfa.challenge');
}
return $next($request);
}
}