# Bug: `Route [login] not defined` no Exception Handler

**Data:** 2026-09-02
**Ambiente:** homolog (`homologacao/sucesu-cms`)
**Severidade:** média (quebra o redirecionamento de bloqueio de login)
**Status:** corrigido

## Sintoma

Ao atingir o limite de tentativas de login (Sentinel `ThrottlingException`) ou ao autenticar
um usuário inativo (`NotActivatedException`), o portal registrava:

```
homolog.ERROR: Route [login] not defined.
Illuminate\Routing\UrlGenerator->route('login', Array)
App\Exceptions\Handler->render
```

O usuário não era redirecionado de volta à tela de login — em vez disso, recebia um erro 500.

## Causa Raiz

`app/Exceptions/Handler.php` tratava ambas as exceções com:

```php
return redirect()->route('login');
```

A rota de login **não existe com o nome `login`** no projeto V2. O único nome registrado é
`v2.cms.login` (ver `V2/Core/Routes/cms.php:15`):

```php
Route::get('/login', 'LoginCmsController@showLoginForm')->name('v2.cms.login');
```

Por isso `UrlGenerator::route('login')` lança `InvalidArgumentException: Route [login] not defined`,
que substitui a exceção original e gera o 500.

O log confirma a cadeia: `CmsAiToken` → pipeline → `ThrottlingException` disparada no
checkpoint de throttle do Sentinel durante o `Sentinel::authenticate`, e o `Handler::render`
tenta o `redirect()->route('login')`.

## Correção

`app/Exceptions/Handler.php` (linhas 65 e 70) passou a usar o nome real da rota:

```php
return redirect()->route('v2.cms.login');
```

## Teste de Regressão

`tests/Unit/App/Exceptions/HandlerLoginRouteTest.php` — 2 testes que instanciam o `Handler`,
disparam `ThrottlingException` e `NotActivatedException` e asseguram o redirect para
`route('v2.cms.login')` sem estourar `InvalidArgumentException`.

## Lição / Prevenção

- Todo `redirect()->route(...)` no código legado (namespace `App\`) deve apontar para nomes de
  rota V2 (`v2.cms.*`, `v2.*`). Não há rotas Laravel padrão (`login`, `logout`, `password.*`).
- Ao adicionar tratamento de exceção que redireciona, validar o nome da rota contra
  `V2/Core/Routes/*.php` e `php artisan route:list`.
