fix(G7-B): stray не-lpimp Bearer на sanctum-роуте → чистый 401 вместо 500 (нет таблицы PAT)
Accessibility (Pa11y live) / a11y (push) Has been cancelled
SAST — Semgrep / Semgrep SAST scan (push) Has been cancelled

This commit is contained in:
Дмитрий
2026-06-19 17:35:53 +03:00
parent 1e5ef3342f
commit 01a9029c25
2 changed files with 12 additions and 2 deletions
+10 -1
View File
@@ -4,6 +4,7 @@ declare(strict_types=1);
namespace App\Models;
use Illuminate\Database\QueryException;
use Laravel\Sanctum\PersonalAccessToken as SanctumPersonalAccessToken;
/**
@@ -28,6 +29,14 @@ class PersonalAccessToken extends SanctumPersonalAccessToken
return null;
}
return parent::findToken($token);
// В проекте нет таблицы personal_access_tokens (SPA cookie-auth, Sanctum
// PAT не используются). Без этого try/catch любой иной Bearer на
// sanctum-роуте ронял бы запрос в 500 (Undefined table) вместо чистого
// 401. Гасим QueryException до null — guard вернёт 401.
try {
return parent::findToken($token);
} catch (QueryException) {
return null;
}
}
}
+2 -1
View File
@@ -2,6 +2,7 @@
use App\Http\Middleware\ApiKeyAuth;
use App\Http\Middleware\EnsureSaasAdmin;
use App\Http\Middleware\ImpersonationContext;
use App\Http\Middleware\SetTenantContext;
use Illuminate\Database\QueryException;
use Illuminate\Foundation\Application;
@@ -29,7 +30,7 @@ return Application::configure(basePath: dirname(__DIR__))
]);
$middleware->web(append: [
\App\Http\Middleware\ImpersonationContext::class,
ImpersonationContext::class,
]);
// Защитные HTTP-заголовки (CSP, X-Frame-Options, X-Content-Type-Options,