RBAC, Permissions, and Export/Import
This commit is contained in:
31
src/App.js
31
src/App.js
@@ -17,12 +17,13 @@ import BecomeMember from './pages/BecomeMember';
|
||||
import PaymentSuccess from './pages/PaymentSuccess';
|
||||
import PaymentCancel from './pages/PaymentCancel';
|
||||
import AdminDashboard from './pages/admin/AdminDashboard';
|
||||
import AdminUsers from './pages/admin/AdminUsers';
|
||||
import AdminUserView from './pages/admin/AdminUserView';
|
||||
import AdminStaff from './pages/admin/AdminStaff';
|
||||
import AdminMembers from './pages/admin/AdminMembers';
|
||||
import AdminPermissions from './pages/admin/AdminPermissions';
|
||||
import AdminRoles from './pages/admin/AdminRoles';
|
||||
import AdminEvents from './pages/admin/AdminEvents';
|
||||
import AdminApprovals from './pages/admin/AdminApprovals';
|
||||
import AdminValidations from './pages/admin/AdminValidations';
|
||||
import AdminPlans from './pages/admin/AdminPlans';
|
||||
import AdminSubscriptions from './pages/admin/AdminSubscriptions';
|
||||
import AdminLayout from './layouts/AdminLayout';
|
||||
@@ -46,6 +47,8 @@ import Donate from './pages/Donate';
|
||||
import DonationSuccess from './pages/DonationSuccess';
|
||||
import Resources from './pages/Resources';
|
||||
import ContactUs from './pages/ContactUs';
|
||||
import TermsOfService from './pages/TermsOfService';
|
||||
import PrivacyPolicy from './pages/PrivacyPolicy';
|
||||
|
||||
const PrivateRoute = ({ children, adminOnly = false }) => {
|
||||
const { user, loading } = useAuth();
|
||||
@@ -58,7 +61,7 @@ const PrivateRoute = ({ children, adminOnly = false }) => {
|
||||
return <Navigate to="/login" />;
|
||||
}
|
||||
|
||||
if (adminOnly && user.role !== 'admin') {
|
||||
if (adminOnly && !['admin', 'superadmin'].includes(user.role)) {
|
||||
return <Navigate to="/dashboard" />;
|
||||
}
|
||||
|
||||
@@ -105,6 +108,10 @@ function App() {
|
||||
<Route path="/donate" element={<Donate />} />
|
||||
<Route path="/donation-success" element={<DonationSuccess />} />
|
||||
|
||||
{/* Legal Pages - Public Access */}
|
||||
<Route path="/terms-of-service" element={<TermsOfService />} />
|
||||
<Route path="/privacy-policy" element={<PrivacyPolicy />} />
|
||||
|
||||
<Route path="/dashboard" element={
|
||||
<PrivateRoute>
|
||||
<Dashboard />
|
||||
@@ -189,13 +196,6 @@ function App() {
|
||||
</AdminLayout>
|
||||
</PrivateRoute>
|
||||
} />
|
||||
<Route path="/admin/users" element={
|
||||
<PrivateRoute adminOnly>
|
||||
<AdminLayout>
|
||||
<AdminUsers />
|
||||
</AdminLayout>
|
||||
</PrivateRoute>
|
||||
} />
|
||||
<Route path="/admin/users/:userId" element={
|
||||
<PrivateRoute adminOnly>
|
||||
<AdminLayout>
|
||||
@@ -210,10 +210,10 @@ function App() {
|
||||
</AdminLayout>
|
||||
</PrivateRoute>
|
||||
} />
|
||||
<Route path="/admin/approvals" element={
|
||||
<Route path="/admin/validations" element={
|
||||
<PrivateRoute adminOnly>
|
||||
<AdminLayout>
|
||||
<AdminApprovals />
|
||||
<AdminValidations />
|
||||
</AdminLayout>
|
||||
</PrivateRoute>
|
||||
} />
|
||||
@@ -259,6 +259,13 @@ function App() {
|
||||
</AdminLayout>
|
||||
</PrivateRoute>
|
||||
} />
|
||||
<Route path="/admin/permissions" element={
|
||||
<PrivateRoute adminOnly>
|
||||
<AdminLayout>
|
||||
<AdminRoles />
|
||||
</AdminLayout>
|
||||
</PrivateRoute>
|
||||
} />
|
||||
</Routes>
|
||||
<Toaster position="top-right" />
|
||||
</BrowserRouter>
|
||||
|
||||
Reference in New Issue
Block a user