04b90afda4
- laravel/sanctum@^4.3 install. SPA mode (cookie-based session, не tokens). personal_access_tokens migration удалена (для SPA не нужна). - AuthController (Api/): login + register + me + logout с детальной валидацией + кастомные русские error-messages. - LoginRequest + RegisterRequest Form Requests. Register требует accept_offer:accepted + accept_pdn:accepted (по ТЗ §1.5/§4.1, БЕЗ маркетингового click-wrap'а - расхождение #2 handoff vs ТЗ). - User::fillable += last_login_at, last_active_at. - Auth-routes в web.php (НЕ api.php): Sanctum SPA нуждается в session-cookie middleware из web-группы (laravel.com/docs/sanctum#spa-authentication). - cspell-words.txt: pdn, залогинен. Pest +13 (всего 61/61 за 6.22s): - login success + 2FA-flag + invalid pass + missing email + blocked + format validation + last_login_at update + register success/duplicate/без accept + me 401/200 + logout 200. - Logout-test упрощён до 200+message - Pest cookie-jar держит session между запросами теста, full flow через browser-mode (отдельный коммит). - phpstan-baseline: +25 ignored Pest TestCall warnings (Larastan+Pest quirk). Регресс: pint+stan passed; vitest 129/129 за 9.59s; vite build 802ms; story:build 21/28 за 30.39s; Pest 61/61 за 6.22s. CLAUDE.md v1.31->v1.32, реестр Открытых_вопросов v1.40->v1.41. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
88 lines
3.0 KiB
PHP
88 lines
3.0 KiB
PHP
<?php
|
|
|
|
use Illuminate\Cookie\Middleware\EncryptCookies;
|
|
use Illuminate\Foundation\Http\Middleware\ValidateCsrfToken;
|
|
use Laravel\Sanctum\Http\Middleware\AuthenticateSession;
|
|
use Laravel\Sanctum\Sanctum;
|
|
|
|
return [
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Stateful Domains
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Requests from the following domains / hosts will receive stateful API
|
|
| authentication cookies. Typically, these should include your local
|
|
| and production domains which access your API via a frontend SPA.
|
|
|
|
|
*/
|
|
|
|
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
|
|
'%s%s',
|
|
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
|
|
Sanctum::currentApplicationUrlWithPort(),
|
|
// Sanctum::currentRequestHost(),
|
|
))),
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Sanctum Guards
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| This array contains the authentication guards that will be checked when
|
|
| Sanctum is trying to authenticate a request. If none of these guards
|
|
| are able to authenticate the request, Sanctum will use the bearer
|
|
| token that's present on an incoming request for authentication.
|
|
|
|
|
*/
|
|
|
|
'guard' => ['web'],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Expiration Minutes
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| This value controls the number of minutes until an issued token will be
|
|
| considered expired. This will override any values set in the token's
|
|
| "expires_at" attribute, but first-party sessions are not affected.
|
|
|
|
|
*/
|
|
|
|
'expiration' => null,
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Token Prefix
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Sanctum can prefix new tokens in order to take advantage of numerous
|
|
| security scanning initiatives maintained by open source platforms
|
|
| that notify developers if they commit tokens into repositories.
|
|
|
|
|
| See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning
|
|
|
|
|
*/
|
|
|
|
'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''),
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Sanctum Middleware
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| When authenticating your first-party SPA with Sanctum you may need to
|
|
| customize some of the middleware Sanctum uses while processing the
|
|
| request. You may change the middleware listed below as required.
|
|
|
|
|
*/
|
|
|
|
'middleware' => [
|
|
'authenticate_session' => AuthenticateSession::class,
|
|
'encrypt_cookies' => EncryptCookies::class,
|
|
'validate_csrf_token' => ValidateCsrfToken::class,
|
|
],
|
|
|
|
];
|