Reports
This commit is contained in:
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user