298
common/resources/client/admin/admin-routes.tsx
Executable file
298
common/resources/client/admin/admin-routes.tsx
Executable file
@@ -0,0 +1,298 @@
|
||||
import {Navigate, RouteObject, useRoutes} from 'react-router-dom';
|
||||
import {AdminLayout} from './admin-layout';
|
||||
import {UserDatatable} from './users/user-datatable';
|
||||
import {AppearanceLayout} from './appearance/appearance-layout';
|
||||
import {MenuList} from './appearance/sections/menus/menu-list';
|
||||
import {MenuEditor} from './appearance/sections/menus/menu-editor';
|
||||
import {MenuItemEditor} from './appearance/sections/menus/menu-item-editor';
|
||||
import {GeneralSection} from './appearance/sections/general-section';
|
||||
import {ThemeList} from './appearance/sections/themes/theme-list';
|
||||
import {SeoSection} from './appearance/sections/seo/seo-section';
|
||||
import {CustomCodeSection} from './appearance/sections/code/custom-code-section';
|
||||
import {CustomPageDatablePage} from './custom-pages/custom-page-datable-page';
|
||||
import {SettingsLayout} from './settings/settings-layout';
|
||||
import {GeneralSettings} from './settings/pages/general-settings';
|
||||
import {ThemeEditor} from './appearance/sections/themes/theme-editor';
|
||||
import {AppSettingsRoutes} from '@app/admin/settings/app-settings-routes';
|
||||
import {SubscriptionSettings} from './settings/pages/subscription-settings';
|
||||
import {LocalizationSettings} from './settings/pages/localization-settings';
|
||||
import {AuthenticationSettings} from './settings/pages/authentication-settings';
|
||||
import {UploadingSettings} from './settings/pages/uploading-settings/uploading-settings';
|
||||
import {OutgoingEmailSettings} from './settings/pages/mail-settings/outgoing-email-settings';
|
||||
import {CacheSettings} from './settings/pages/cache-settings/cache-settings';
|
||||
import {LoggingSettings} from './settings/pages/logging-settings';
|
||||
import {QueueSettings} from './settings/pages/queue-settings';
|
||||
import {RecaptchaSettings} from './settings/pages/recaptcha-settings';
|
||||
import {ReportsSettings} from './settings/pages/reports-settings';
|
||||
import {UpdateUserPage} from './users/update-user-page';
|
||||
import {CreateUserPage} from './users/create-user-page';
|
||||
import {LocalizationIndex} from './translations/localization-index';
|
||||
import {TranslationManagementPage} from './translations/translation-management-page';
|
||||
import {AdsPage} from './ads/ads-page';
|
||||
import React from 'react';
|
||||
import {FullPageLoader} from '../ui/progress/full-page-loader';
|
||||
import {SectionList} from './appearance/section-list';
|
||||
import {RolesIndexPage} from './roles/roles-index-page';
|
||||
import {EditRolePage} from './roles/crupdate-role-page/edit-role-page';
|
||||
import {CreateRolePage} from './roles/crupdate-role-page/create-role-page';
|
||||
import {TagIndexPage} from './tags/tag-index-page';
|
||||
import {FileEntryIndexPage} from './file-entry/file-entry-index-page';
|
||||
import {SubscriptionsIndexPage} from './subscriptions/subscriptions-index-page';
|
||||
import {PlansIndexPage} from './plans/plans-index-page';
|
||||
import {EditPlanPage} from './plans/crupdate-plan-page/edit-plan-page';
|
||||
import {CreatePlanPage} from './plans/crupdate-plan-page/create-plan-page';
|
||||
import {GdprSettings} from './settings/pages/gdpr-settings';
|
||||
import {AuthRoute} from '../auth/guards/auth-route';
|
||||
import {NotFoundPage} from '../ui/not-found-page/not-found-page';
|
||||
import {AppAppearanceConfig} from '@app/admin/appearance/app-appearance-config';
|
||||
import {AppAdminRoutes} from '@app/admin/app-admin-routes';
|
||||
import {EditCustomPage} from '@common/admin/custom-pages/edit-custom-page';
|
||||
import {CreateCustomPage} from '@common/admin/custom-pages/create-custom-page';
|
||||
import {ThemeFontPanel} from '@common/admin/appearance/sections/themes/theme-font-panel';
|
||||
import {ThemeRadiusPanel} from '@common/admin/appearance/sections/themes/theme-radius-panel';
|
||||
import {LogsPage} from '@common/admin/logging/logs-page';
|
||||
import {ScheduleLogDatatable} from '@common/admin/logging/schedule/schedule-log-datatable';
|
||||
import {ErrorLogDatatable} from '@common/admin/logging/error/error-log-datatable';
|
||||
import {OutgoingEmailLogDatatable} from '@common/admin/logging/outgoing-email/outgoing-email-log-datatable';
|
||||
|
||||
const ReportsPage = React.lazy(() => import('./analytics/admin-report-page'));
|
||||
|
||||
const AdminRouteConfig: RouteObject[] = [
|
||||
{
|
||||
path: 'appearance',
|
||||
element: (
|
||||
<AuthRoute permission="appearance.update">
|
||||
<AppearanceLayout />
|
||||
</AuthRoute>
|
||||
),
|
||||
children: [
|
||||
{index: true, element: <SectionList />},
|
||||
{path: 'general', element: <GeneralSection />},
|
||||
{path: 'seo-settings', element: <SeoSection />},
|
||||
{path: 'custom-code', element: <CustomCodeSection />},
|
||||
{path: 'themes', element: <ThemeList />},
|
||||
{path: 'themes/:themeIndex', element: <ThemeEditor />},
|
||||
{path: 'themes/:themeIndex/font', element: <ThemeFontPanel />},
|
||||
{path: 'themes/:themeIndex/radius', element: <ThemeRadiusPanel />},
|
||||
{path: 'menus', element: <MenuList />},
|
||||
{path: 'menus/:menuIndex', element: <MenuEditor />},
|
||||
{
|
||||
path: 'menus/:menuIndex/items/:menuItemIndex',
|
||||
element: <MenuItemEditor />,
|
||||
},
|
||||
...Object.values(AppAppearanceConfig.sections).flatMap(
|
||||
s => s.routes || [],
|
||||
),
|
||||
],
|
||||
},
|
||||
|
||||
{
|
||||
path: '/',
|
||||
element: <AdminLayout />,
|
||||
children: [
|
||||
...AppAdminRoutes,
|
||||
// REPORT PAGE
|
||||
{
|
||||
path: '/',
|
||||
element: (
|
||||
<React.Suspense fallback={<FullPageLoader screen />}>
|
||||
<ReportsPage />
|
||||
</React.Suspense>
|
||||
),
|
||||
},
|
||||
// USERS
|
||||
{
|
||||
path: 'users',
|
||||
element: (
|
||||
<AuthRoute permission="users.update">
|
||||
<UserDatatable />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'users/new',
|
||||
element: (
|
||||
<AuthRoute permission="users.update">
|
||||
<CreateUserPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'users/:userId/edit',
|
||||
element: (
|
||||
<AuthRoute permission="users.update">
|
||||
<UpdateUserPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
// ROLES
|
||||
{
|
||||
path: 'roles',
|
||||
element: (
|
||||
<AuthRoute permission="roles.update">
|
||||
<RolesIndexPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'roles/new',
|
||||
element: (
|
||||
<AuthRoute permission="roles.update">
|
||||
<CreateRolePage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'roles/:roleId/edit',
|
||||
element: (
|
||||
<AuthRoute permission="roles.update">
|
||||
<EditRolePage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
// SUBSCRIPTIONS and PLANS
|
||||
{
|
||||
path: 'subscriptions',
|
||||
element: (
|
||||
<AuthRoute permission="subscriptions.update">
|
||||
<SubscriptionsIndexPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'plans',
|
||||
element: (
|
||||
<AuthRoute permission="plans.update">
|
||||
<PlansIndexPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'plans/new',
|
||||
element: (
|
||||
<AuthRoute permission="plans.update">
|
||||
<CreatePlanPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'plans/:productId/edit',
|
||||
element: (
|
||||
<AuthRoute permission="plans.update">
|
||||
<EditPlanPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
// CUSTOM PAGES
|
||||
{
|
||||
path: 'custom-pages',
|
||||
element: (
|
||||
<AuthRoute permission="custom_pages.update">
|
||||
<CustomPageDatablePage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'custom-pages/new',
|
||||
element: (
|
||||
<AuthRoute permission="custom_pages.update">
|
||||
<CreateCustomPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'custom-pages/:pageId/edit',
|
||||
element: (
|
||||
<AuthRoute permission="custom_pages.update">
|
||||
<EditCustomPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
// TAGS
|
||||
{
|
||||
path: 'tags',
|
||||
element: (
|
||||
<AuthRoute permission="tags.update">
|
||||
<TagIndexPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
// LOCALIZATIONS
|
||||
{
|
||||
path: 'localizations',
|
||||
element: (
|
||||
<AuthRoute permission="localizations.update">
|
||||
<LocalizationIndex />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
{
|
||||
path: 'localizations/:localeId/translate',
|
||||
element: <TranslationManagementPage />,
|
||||
},
|
||||
// FILE ENTRIES
|
||||
{
|
||||
path: 'files',
|
||||
element: (
|
||||
<AuthRoute permission="files.update">
|
||||
<FileEntryIndexPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
// ADS
|
||||
{
|
||||
path: 'ads',
|
||||
element: (
|
||||
<AuthRoute permission="settings.update">
|
||||
<AdsPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
},
|
||||
// SETTINGS
|
||||
{
|
||||
path: 'settings',
|
||||
element: (
|
||||
<AuthRoute permission="settings.update">
|
||||
<SettingsLayout />
|
||||
</AuthRoute>
|
||||
),
|
||||
children: [
|
||||
{index: true, element: <Navigate to="general" replace />},
|
||||
{path: 'general', element: <GeneralSettings />},
|
||||
{path: 'subscriptions', element: <SubscriptionSettings />},
|
||||
{path: 'localization', element: <LocalizationSettings />},
|
||||
{path: 'authentication', element: <AuthenticationSettings />},
|
||||
{path: 'uploading', element: <UploadingSettings />},
|
||||
{path: 'outgoing-email', element: <OutgoingEmailSettings />},
|
||||
{path: 'cache', element: <CacheSettings />},
|
||||
{path: 'analytics', element: <ReportsSettings />},
|
||||
{path: 'logging', element: <LoggingSettings />},
|
||||
{path: 'queue', element: <QueueSettings />},
|
||||
{path: 'recaptcha', element: <RecaptchaSettings />},
|
||||
{path: 'gdpr', element: <GdprSettings />},
|
||||
...AppSettingsRoutes,
|
||||
],
|
||||
},
|
||||
// LOGS
|
||||
{
|
||||
path: 'logs',
|
||||
element: (
|
||||
<AuthRoute permission="logs.view">
|
||||
<LogsPage />
|
||||
</AuthRoute>
|
||||
),
|
||||
children: [
|
||||
{index: true, element: <ScheduleLogDatatable />},
|
||||
{path: 'schedule', element: <ScheduleLogDatatable />},
|
||||
{path: 'error', element: <ErrorLogDatatable />},
|
||||
{path: 'outgoing-email', element: <OutgoingEmailLogDatatable />},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{path: '*', element: <NotFoundPage />},
|
||||
];
|
||||
|
||||
export default function AdminRoutes() {
|
||||
return useRoutes(AdminRouteConfig);
|
||||
}
|
||||
Reference in New Issue
Block a user