Repository navigation
Expand file tree
/
Copy pathApp.tsx
More file actions
122 lines (113 loc) · 3.32 KB
/
Copy pathApp.tsx
File metadata and controls
122 lines (113 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import { AuthProvider } from './contexts/AuthContext';
import { ProtectedRoute } from './components/ProtectedRoute';
import { Navbar } from './components/Navbar';
// Pages
import { Home } from './pages/Home';
import { Login } from './pages/Login';
import { Dashboard } from './pages/Dashboard';
// Admin pages
import { Students } from './pages/admin/Students';
import { Teachers } from './pages/admin/Teachers';
import { Classes } from './pages/admin/Classes';
import { Grades } from './pages/admin/Grades';
import { Tests } from './pages/admin/Tests';
import { Admins } from './pages/admin/Admins';
// Student pages
import { StudentGrades } from './pages/student/Grades';
import { Profile } from './pages/student/Profile';
function App() {
return (
<AuthProvider>
<Router>
<div className="min-h-screen bg-gray-50">
<Navbar />
<Routes>
{/* Public routes */}
<Route path="/" element={<Home />} />
<Route path="/login" element={<Login />} />
{/* Protected routes */}
<Route
path="/dashboard"
element={
<ProtectedRoute>
<Dashboard />
</ProtectedRoute>
}
/>
{/* Admin only routes */}
<Route
path="/admin/students"
element={
<ProtectedRoute role="admin">
<Students />
</ProtectedRoute>
}
/>
<Route
path="/admin/teachers"
element={
<ProtectedRoute role="admin">
<Teachers />
</ProtectedRoute>
}
/>
<Route
path="/admin/classes"
element={
<ProtectedRoute role="admin">
<Classes />
</ProtectedRoute>
}
/>
<Route
path="/admin/grades"
element={
<ProtectedRoute role="admin">
<Grades />
</ProtectedRoute>
}
/>
<Route
path="/admin/tests"
element={
<ProtectedRoute role="admin">
<Tests />
</ProtectedRoute>
}
/>
<Route
path="/admin/admins"
element={
<ProtectedRoute role="admin">
<Admins />
</ProtectedRoute>
}
/>
{/* Student only routes */}
<Route
path="/student/grades"
element={
<ProtectedRoute role="student">
<StudentGrades />
</ProtectedRoute>
}
/>
<Route
path="/student/profile"
element={
<ProtectedRoute role="student">
<Profile />
</ProtectedRoute>
}
/>
{/* Fallback route */}
<Route path="*" element={<Home />} />
</Routes>
</div>
</Router>
</AuthProvider>
);
}
export default App;