RBAC, Permissions, and Export/Import

This commit is contained in:
Koncept Kit
2025-12-16 20:04:00 +07:00
parent 02e38e1050
commit 9ed778db1c
30 changed files with 4579 additions and 487 deletions

View File

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