@@ -5,6 +5,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
// Importa il tuo SessionCubit e lo State
|
||||
import 'package:flux/core/blocs/session/session_cubit.dart';
|
||||
import 'package:flux/core/data/core_repository.dart';
|
||||
import 'package:flux/core/widgets/set_password_screen.dart';
|
||||
import 'package:flux/features/customers/ui/customer_mobile_upload_screen.dart';
|
||||
import 'package:flux/features/auth/ui/auth_screen.dart';
|
||||
import 'package:flux/features/customers/blocs/customer_files_bloc.dart';
|
||||
@@ -33,6 +34,7 @@ class AppRouter {
|
||||
final sessionState = sessionCubit.state;
|
||||
final isGoingToLogin = state.matchedLocation == '/login';
|
||||
final isGoingToOnboarding = state.matchedLocation == '/onboarding';
|
||||
final isGoingToSetPassword = state.matchedLocation == '/set-password';
|
||||
|
||||
// Caso 1: L'app si sta ancora avviando.
|
||||
// Restituiamo null per farlo rimanere sulla SplashScreen del main.dart
|
||||
@@ -43,7 +45,8 @@ class AppRouter {
|
||||
// Caso 2: Utente NON loggato.
|
||||
if (sessionState.status == SessionStatus.unauthenticated) {
|
||||
// Se sta già andando al login, lascialo andare. Altrimenti, forzalo al login.
|
||||
return isGoingToLogin ? null : '/login';
|
||||
if (isGoingToLogin || isGoingToSetPassword) return null;
|
||||
return '/login';
|
||||
}
|
||||
|
||||
// Caso 3: Utente loggato MA manca un pezzo dell'azienda (Flusso Canalizzatore)
|
||||
@@ -55,13 +58,13 @@ class AppRouter {
|
||||
|
||||
// Caso 4: Utente loggato e configurato (Tutto OK!)
|
||||
if (sessionState.status == SessionStatus.authenticated) {
|
||||
// Se per sbaglio cerca di tornare al login o all'onboarding,
|
||||
// lo rimbalziamo alla home.
|
||||
// Attenzione: un utente appena invitato viene considerato "loggato"
|
||||
// da Supabase appena clicca il link. Quindi se sta andando su /set-password,
|
||||
// dobbiamo permetterglielo e non rimbalzarlo!
|
||||
if (isGoingToLogin || isGoingToOnboarding) {
|
||||
return '/';
|
||||
}
|
||||
// Per tutte le altre rotte (dashboard, clienti, anagrafiche), lascialo passare.
|
||||
return null;
|
||||
return null; // Lascia passare per /, /customer, e anche /set-password
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -72,6 +75,10 @@ class AppRouter {
|
||||
//builder: (context, state) => const LoginScreen(),
|
||||
builder: (context, state) => const AuthScreen(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/set-password',
|
||||
builder: (context, state) => const SetPasswordScreen(),
|
||||
),
|
||||
GoRoute(
|
||||
path: '/onboarding',
|
||||
builder: (context, state) => BlocProvider(
|
||||
|
||||
Reference in New Issue
Block a user