Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-04-28 10:12:15 +02:00
parent 77987258aa
commit c49964e5c5
6 changed files with 147 additions and 10 deletions

View File

@@ -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(