This commit is contained in:
2026-03-03 07:38:40 +08:00
parent 7115e2df05
commit d9270b3edf
18 changed files with 3638 additions and 8 deletions
+12 -8
View File
@@ -16,6 +16,7 @@ import '../screens/notifications/notifications_screen.dart';
import '../screens/profile/profile_screen.dart';
import '../screens/shared/under_development_screen.dart';
import '../screens/shared/permissions_screen.dart';
import '../screens/reports/reports_screen.dart';
import '../screens/tasks/task_detail_screen.dart';
import '../screens/tasks/tasks_list_screen.dart';
import '../screens/tickets/ticket_detail_screen.dart';
@@ -45,9 +46,13 @@ final appRouterProvider = Provider<GoRouter>((ref) {
final isSignedIn = session != null;
final profileAsync = ref.read(currentProfileProvider);
final isAdminRoute = state.matchedLocation.startsWith('/settings');
final isAdmin = profileAsync is AsyncData
? (profileAsync.value)?.role == 'admin'
: false;
final role = profileAsync is AsyncData
? (profileAsync.value)?.role
: null;
final isAdmin = role == 'admin';
final isReportsRoute = state.matchedLocation == '/reports';
final hasReportsAccess =
role == 'admin' || role == 'dispatcher' || role == 'it_staff';
if (!isSignedIn && !isAuthRoute) {
return '/login';
@@ -58,6 +63,9 @@ final appRouterProvider = Provider<GoRouter>((ref) {
if (isAdminRoute && !isAdmin) {
return '/tickets';
}
if (isReportsRoute && !hasReportsAccess) {
return '/tickets';
}
return null;
},
routes: [
@@ -122,11 +130,7 @@ final appRouterProvider = Provider<GoRouter>((ref) {
),
GoRoute(
path: '/reports',
builder: (context, state) => const UnderDevelopmentScreen(
title: 'Reports',
subtitle: 'Reporting automation is under development.',
icon: Icons.analytics,
),
builder: (context, state) => const ReportsScreen(),
),
GoRoute(
path: '/settings/users',