mirror of
https://github.com/Unleash/unleash.git
synced 2025-05-03 01:18:43 +02:00
* fix: setup new routes * fix: copy toggle * fix: link to correct project * fix: redirect oss to default * fix: update tests * fix: edit path * fix: remove invalid property * fix: add project to test data * fix: update paths to use features * fix: update test data * fix: update snapshots * fix: only show button to add toggle if you have access * fix: change heading * fix: use new route * fix: archive view * fix: update snapshots * fix: sorting headers * fix: list headers * fix: only show span if revive is present * fix: add border to list * fix: update snapshots * fix: remove console log
448 lines
11 KiB
JavaScript
448 lines
11 KiB
JavaScript
import CreateFeatureToggle from '../../page/features/create';
|
|
import CopyFeatureToggle from '../../page/features/copy';
|
|
import ViewFeatureToggle from '../../page/features/show';
|
|
import Features from '../../page/features';
|
|
import CreateStrategies from '../../page/strategies/create';
|
|
import StrategyView from '../../page/strategies/show';
|
|
import Strategies from '../../page/strategies';
|
|
import HistoryPage from '../../page/history';
|
|
import HistoryTogglePage from '../../page/history/toggle';
|
|
import ShowArchive from '../../page/archive/show';
|
|
import Archive from '../../page/archive';
|
|
import Applications from '../../page/applications';
|
|
import ApplicationView from '../../page/applications/view';
|
|
import ContextFields from '../../page/context';
|
|
import CreateContextField from '../../page/context/create';
|
|
import EditContextField from '../../page/context/edit';
|
|
import CreateProject from '../../page/project/create';
|
|
import EditProject from '../../page/project/edit';
|
|
import EditProjectAccess from '../../page/project/access';
|
|
import ListTagTypes from '../../page/tag-types';
|
|
import CreateTagType from '../../page/tag-types/create';
|
|
import EditTagType from '../../page/tag-types/edit';
|
|
import ListTags from '../../page/tags';
|
|
import CreateTag from '../../page/tags/create';
|
|
import Addons from '../../page/addons';
|
|
import AddonsCreate from '../../page/addons/create';
|
|
import AddonsEdit from '../../page/addons/edit';
|
|
import Admin from '../../page/admin';
|
|
import AdminApi from '../../page/admin/api';
|
|
import AdminUsers from '../../page/admin/users';
|
|
import AdminInvoice from '../../page/admin/invoice';
|
|
import AdminAuth from '../../page/admin/auth';
|
|
import Reporting from '../../page/reporting';
|
|
import Login from '../user/Login';
|
|
import { P, C } from '../common/flags';
|
|
import NewUser from '../user/NewUser';
|
|
import ResetPassword from '../user/ResetPassword/ResetPassword';
|
|
import ForgottenPassword from '../user/ForgottenPassword/ForgottenPassword';
|
|
import ProjectListNew from '../project/ProjectList/ProjectList';
|
|
import Project from '../project/Project/Project';
|
|
import RedirectFeatureViewPage from '../../page/features/redirect';
|
|
import RedirectArchive from '../feature/RedirectArchive/RedirectArchive';
|
|
|
|
export const routes = [
|
|
// Features
|
|
{
|
|
path: '/features/:activeTab/:name',
|
|
parent: '/features',
|
|
title: ':name',
|
|
component: RedirectFeatureViewPage,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/features',
|
|
title: 'Feature Toggles',
|
|
component: Features,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
|
|
// Strategies
|
|
{
|
|
path: '/strategies/create',
|
|
title: 'Create',
|
|
parent: '/strategies',
|
|
component: CreateStrategies,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/strategies/:activeTab/:strategyName',
|
|
title: ':strategyName',
|
|
parent: '/strategies',
|
|
component: StrategyView,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/strategies',
|
|
title: 'Strategies',
|
|
component: Strategies,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { advanced: true },
|
|
},
|
|
|
|
// History
|
|
{
|
|
path: '/history/:toggleName',
|
|
title: ':toggleName',
|
|
parent: '/history',
|
|
component: HistoryTogglePage,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/history',
|
|
title: 'Event History',
|
|
component: HistoryPage,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { adminSettings: true },
|
|
},
|
|
|
|
// Archive
|
|
{
|
|
path: '/projects/:id/archived/:name/:activeTab',
|
|
title: ':name',
|
|
parent: '/archive',
|
|
component: ShowArchive,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/archive',
|
|
title: 'Archived Toggles',
|
|
component: Archive,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
|
|
// Applications
|
|
{
|
|
path: '/applications/:name',
|
|
title: ':name',
|
|
parent: '/applications',
|
|
component: ApplicationView,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/applications',
|
|
title: 'Applications',
|
|
component: Applications,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { advanced: true },
|
|
},
|
|
|
|
// Context
|
|
{
|
|
path: '/context/create',
|
|
parent: '/context',
|
|
title: 'Create',
|
|
component: CreateContextField,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/context/edit/:name',
|
|
parent: '/context',
|
|
title: ':name',
|
|
component: EditContextField,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/context',
|
|
title: 'Context Fields',
|
|
component: ContextFields,
|
|
type: 'protected',
|
|
flag: C,
|
|
layout: 'main',
|
|
menu: { advanced: true },
|
|
},
|
|
|
|
// Project
|
|
{
|
|
path: '/projects/create',
|
|
parent: '/projects',
|
|
title: 'Create',
|
|
component: CreateProject,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/projects/:id/edit',
|
|
parent: '/projects',
|
|
title: ':id',
|
|
component: EditProject,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/projects/:id/access',
|
|
parent: '/projects',
|
|
title: ':id',
|
|
component: EditProjectAccess,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/projects/:id/archived',
|
|
title: ':name',
|
|
parent: '/archive',
|
|
component: RedirectArchive,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/projects/:id/features/:name/:activeTab/copy',
|
|
parent: '/projects/:id/features/:name/:activeTab',
|
|
title: 'Copy',
|
|
component: CopyFeatureToggle,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/projects/:id/features/:name/:activeTab',
|
|
parent: '/projects',
|
|
title: ':name',
|
|
component: ViewFeatureToggle,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/projects/:id/create-toggle',
|
|
parent: '/projects',
|
|
title: 'Create',
|
|
component: CreateFeatureToggle,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/projects/:id',
|
|
parent: '/projects',
|
|
title: ':id',
|
|
component: Project,
|
|
flag: P,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/projects',
|
|
title: 'Projects',
|
|
component: ProjectListNew,
|
|
flag: P,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
|
|
{
|
|
path: '/tag-types/create',
|
|
parent: '/tag-types',
|
|
title: 'Create',
|
|
component: CreateTagType,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/tag-types/edit/:name',
|
|
parent: '/tag-types',
|
|
title: ':name',
|
|
component: EditTagType,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/tag-types',
|
|
title: 'Tag types',
|
|
component: ListTagTypes,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { advanced: true },
|
|
},
|
|
|
|
{
|
|
path: '/tags/create',
|
|
parent: '/tags',
|
|
title: 'Create',
|
|
component: CreateTag,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/tags',
|
|
title: 'Tags',
|
|
component: ListTags,
|
|
hidden: true,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
|
|
// Addons
|
|
{
|
|
path: '/addons/create/:provider',
|
|
parent: '/addons',
|
|
title: 'Create',
|
|
component: AddonsCreate,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/addons/edit/:id',
|
|
parent: '/addons',
|
|
title: 'Edit',
|
|
component: AddonsEdit,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/addons',
|
|
title: 'Addons',
|
|
component: Addons,
|
|
hidden: false,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { advanced: true },
|
|
},
|
|
{
|
|
path: '/reporting',
|
|
title: 'Reporting',
|
|
component: Reporting,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { advanced: true },
|
|
},
|
|
// Admin
|
|
{
|
|
path: '/admin/api',
|
|
parent: '/admin',
|
|
title: 'API access',
|
|
component: AdminApi,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { advanced: true, adminSettings: true },
|
|
},
|
|
{
|
|
path: '/admin/users',
|
|
parent: '/admin',
|
|
title: 'Users',
|
|
component: AdminUsers,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { adminSettings: true },
|
|
},
|
|
{
|
|
path: '/admin/auth',
|
|
parent: '/admin',
|
|
title: 'Single Sign-On',
|
|
component: AdminAuth,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { adminSettings: true },
|
|
},
|
|
{
|
|
path: '/admin-invoices',
|
|
title: 'Invoices',
|
|
component: AdminInvoice,
|
|
hidden: true,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: { adminSettings: true },
|
|
},
|
|
{
|
|
path: '/admin',
|
|
title: 'Admin',
|
|
component: Admin,
|
|
hidden: false,
|
|
type: 'protected',
|
|
layout: 'main',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/login',
|
|
title: 'Log in',
|
|
component: Login,
|
|
type: 'unprotected',
|
|
hidden: true,
|
|
layout: 'standalone',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/new-user',
|
|
title: 'New user',
|
|
hidden: true,
|
|
component: NewUser,
|
|
type: 'unprotected',
|
|
layout: 'standalone',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/reset-password',
|
|
title: 'reset-password',
|
|
hidden: true,
|
|
component: ResetPassword,
|
|
type: 'unprotected',
|
|
layout: 'standalone',
|
|
menu: {},
|
|
},
|
|
{
|
|
path: '/forgotten-password',
|
|
title: 'reset-password',
|
|
hidden: true,
|
|
component: ForgottenPassword,
|
|
type: 'unprotected',
|
|
layout: 'standalone',
|
|
menu: {},
|
|
},
|
|
];
|
|
|
|
export const getRoute = path => routes.find(route => route.path === path);
|
|
|
|
export const baseRoutes = routes
|
|
.filter(route => !route.hidden)
|
|
.filter(route => !route.parent);
|
|
|
|
const computeRoutes = () => {
|
|
const mainNavRoutes = baseRoutes.filter(route => route.menu.advanced);
|
|
const adminRoutes = routes.filter(route => route.menu.adminSettings);
|
|
|
|
const computedRoutes = {
|
|
mainNavRoutes,
|
|
adminRoutes,
|
|
};
|
|
return () => {
|
|
return computedRoutes;
|
|
};
|
|
};
|
|
|
|
export const getRoutes = computeRoutes();
|