Compare commits
2 Commits
64a4a5fcbc
...
44fcd37366
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
44fcd37366 | ||
|
|
2c2238548a |
81
.planning/phases/01-foundation-auth/01-UAT.md
Normal file
81
.planning/phases/01-foundation-auth/01-UAT.md
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
---
|
||||||
|
status: complete
|
||||||
|
phase: 01-foundation-auth
|
||||||
|
source: 01-01-SUMMARY.md, 01-02-SUMMARY.md, 01-03-SUMMARY.md, 01-04-SUMMARY.md, 01-05-SUMMARY.md, 01-06-SUMMARY.md
|
||||||
|
started: 2026-01-31T20:15:00Z
|
||||||
|
updated: 2026-01-31T20:30:00Z
|
||||||
|
---
|
||||||
|
|
||||||
|
## Current Test
|
||||||
|
|
||||||
|
[testing complete]
|
||||||
|
|
||||||
|
## Tests
|
||||||
|
|
||||||
|
### 1. Homepage carica correttamente
|
||||||
|
expected: Visitando https://lab.mlhub.it/leopost/ si vede la landing page con titolo "Leopost", descrizione del prodotto, e pulsanti "Inizia gratis" e "Accedi"
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 2. Pagina di registrazione
|
||||||
|
expected: Cliccando "Inizia gratis" o visitando /register/ si vede il form di registrazione con pulsante "Accedi con Google" in alto, divisore "oppure", e form email/password sotto
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 3. Pagina di login
|
||||||
|
expected: Visitando /login/ si vede il form di login con pulsante "Accedi con Google" in alto, divisore "oppure", e form email/password sotto
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 4. Registrazione con email/password
|
||||||
|
expected: Inserendo email e password validi nel form di registrazione e cliccando "Registrati", l'utente viene registrato e vede messaggio di conferma email
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 5. Login con Google OAuth
|
||||||
|
expected: Cliccando "Accedi con Google", l'utente viene reindirizzato a Google, seleziona account, e torna autenticato alla dashboard
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 6. Protezione route - utente non autenticato
|
||||||
|
expected: Visitando /dashboard/ senza essere loggati, si viene reindirizzati a /login/
|
||||||
|
result: issue
|
||||||
|
reported: "quasi giusto: se vado su https://lab.mlhub.it/leopost/dashboard, mi reindirizza qui https://lab.mlhub.it/login/?redirectTo=%2Fdashboard%2F e mi mostra errore 404, dovrebbe reindirizzarmi qui https://lab.mlhub.it/leopost/login/?redirectTo=%2Fdashboard%2F"
|
||||||
|
severity: major
|
||||||
|
|
||||||
|
### 7. Dashboard dopo login
|
||||||
|
expected: Dopo il login, l'utente vede la dashboard con il suo piano attuale, checklist onboarding, e navigazione con nome utente
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 8. Persistenza sessione
|
||||||
|
expected: Dopo il login, ricaricando la pagina (F5), l'utente rimane autenticato e vede ancora la dashboard
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 9. Logout
|
||||||
|
expected: Cliccando sul menu utente e poi "Esci", l'utente viene disconnesso e reindirizzato alla pagina di login
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 10. Pagina subscription
|
||||||
|
expected: Visitando /subscription/ da autenticati, si vedono i 3 piani (Gratuito, Creator, Pro) con prezzi, funzionalita, e pulsante per cambiare piano
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 11. Cambio piano
|
||||||
|
expected: Cliccando "Passa a questo piano" su un piano diverso dal corrente, il piano dell'utente viene aggiornato immediatamente (visibile nel badge piano)
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
### 12. Testi in italiano
|
||||||
|
expected: Tutti i testi dell'interfaccia sono in italiano (pulsanti, messaggi, descrizioni piani)
|
||||||
|
result: pass
|
||||||
|
|
||||||
|
## Summary
|
||||||
|
|
||||||
|
total: 12
|
||||||
|
passed: 11
|
||||||
|
issues: 1
|
||||||
|
pending: 0
|
||||||
|
skipped: 0
|
||||||
|
|
||||||
|
## Gaps
|
||||||
|
|
||||||
|
- truth: "Visitando /dashboard/ senza essere loggati, si viene reindirizzati a /login/"
|
||||||
|
status: failed
|
||||||
|
reason: "User reported: quasi giusto: se vado su https://lab.mlhub.it/leopost/dashboard, mi reindirizza qui https://lab.mlhub.it/login/?redirectTo=%2Fdashboard%2F e mi mostra errore 404, dovrebbe reindirizzarmi qui https://lab.mlhub.it/leopost/login/?redirectTo=%2Fdashboard%2F"
|
||||||
|
severity: major
|
||||||
|
test: 6
|
||||||
|
artifacts: []
|
||||||
|
missing: []
|
||||||
@@ -18,7 +18,9 @@ export async function middleware(request: NextRequest) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (isProtectedRoute && !user) {
|
if (isProtectedRoute && !user) {
|
||||||
const redirectUrl = new URL('/login/', request.url)
|
// Use nextUrl.clone() to preserve basePath in redirect
|
||||||
|
const redirectUrl = request.nextUrl.clone()
|
||||||
|
redirectUrl.pathname = '/login/'
|
||||||
redirectUrl.searchParams.set('redirectTo', pathname)
|
redirectUrl.searchParams.set('redirectTo', pathname)
|
||||||
return NextResponse.redirect(redirectUrl)
|
return NextResponse.redirect(redirectUrl)
|
||||||
}
|
}
|
||||||
@@ -29,7 +31,10 @@ export async function middleware(request: NextRequest) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (isAuthRoute && user) {
|
if (isAuthRoute && user) {
|
||||||
return NextResponse.redirect(new URL('/dashboard/', request.url))
|
// Use nextUrl.clone() to preserve basePath in redirect
|
||||||
|
const url = request.nextUrl.clone()
|
||||||
|
url.pathname = '/dashboard/'
|
||||||
|
return NextResponse.redirect(url)
|
||||||
}
|
}
|
||||||
|
|
||||||
return supabaseResponse
|
return supabaseResponse
|
||||||
|
|||||||
Reference in New Issue
Block a user