df
This commit is contained in:
@@ -51,24 +51,36 @@ class AppRouter {
|
||||
final isGoingToLogin = state.matchedLocation == '/login';
|
||||
final isGoingToOnboarding = state.matchedLocation == '/onboarding';
|
||||
final isGoingToSetPassword = state.matchedLocation == '/set-password';
|
||||
|
||||
// 1. LA PASSATOIA VIP (DEVE ESSERE IN CIMA)
|
||||
// Usiamo state.uri.path perché state.matchedLocation a volte fa i capricci coi deep link iniziali
|
||||
final isPublicRoute = state.uri.path.startsWith('/upload');
|
||||
|
||||
if (isPublicRoute) {
|
||||
return null; // Null significa "Non reindirizzare, lascialo passare"
|
||||
// Ritorna null esplicitamente per dire al router "Rimani qui e non fare altri controlli"
|
||||
return null;
|
||||
}
|
||||
|
||||
// 2. CONTROLLO INIZIALE
|
||||
// Se la sessione sta ancora caricando la primissima volta (es. splash screen logico)
|
||||
if (sessionState.status == SessionStatus.initial) return null;
|
||||
|
||||
// 3. UTENTE NON LOGGATO (Ma ci arriva solo se non è su /upload)
|
||||
if (sessionState.status == SessionStatus.unauthenticated) {
|
||||
// Se sta già andando alle uniche altre pagine pubbliche, lascialo andare
|
||||
if (isGoingToLogin || isGoingToSetPassword) return null;
|
||||
// Altrimenti bloccalo e mandalo al login
|
||||
return '/login';
|
||||
}
|
||||
|
||||
// 4. UTENTE LOGGATO MA DEVE COMPLETARE L'ONBOARDING
|
||||
if (sessionState.status == SessionStatus.onboardingRequired) {
|
||||
return isGoingToOnboarding ? null : '/onboarding';
|
||||
}
|
||||
|
||||
// 5. UTENTE PERFETTAMENTE LOGGATO E OPERATIVO
|
||||
if (sessionState.status == SessionStatus.authenticated) {
|
||||
// Se per sbaglio cerca di tornare al login o all'onboarding, ributtalo in dashboard
|
||||
if (isGoingToLogin || isGoingToOnboarding) return '/';
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user