browsertrix/frontend/src/routes.ts
sua yoo 06f6d9d4f2
feat: Move admin route to own namespace (#2405)
Resolves https://github.com/webrecorder/browsertrix/issues/2382

## Changes
- Moves superadmin to `/admin` URL namespace
- Removes superadmin views from main webpack chunks
2025-02-20 18:43:31 -08:00

52 lines
1.9 KiB
TypeScript

export enum OrgTab {
Dashboard = "dashboard",
Workflows = "workflows",
Items = "items",
Collections = "collections",
BrowserProfiles = "browser-profiles",
Settings = "settings",
}
export enum RouteNamespace {
PrivateOrgs = "orgs",
PublicOrgs = "explore",
Superadmin = "admin",
}
export const ROUTES = {
home: "/",
join: "/join/:token",
signUp: "/sign-up",
acceptInvite: "/invite/accept/:token",
verify: "/verify",
login: "/log-in",
loginWithRedirect: "/log-in?redirectUrl",
forgotPassword: "/log-in/forgot-password",
resetPassword: "/reset-password",
accountSettings: "/account/settings(/:settingsTab)",
orgs: `/${RouteNamespace.PrivateOrgs}(/)`,
org: [
`/${RouteNamespace.PrivateOrgs}/:slug(/)`,
// Org sections:
`(/${OrgTab.Dashboard})`,
`(/${OrgTab.Workflows}(/new)(/:workflowId(/crawls/:itemId(/review/:qaTab))))`,
`(/${OrgTab.Items}(/:itemType(/:itemId(/review/:qaTab))))`,
`(/${OrgTab.Collections}(/new)(/view/:collectionId(/:collectionTab)))`,
`(/${OrgTab.BrowserProfiles}(/profile(/browser/:browserId)(/:browserProfileId)))`,
`(/${OrgTab.Settings}(/:settingsTab))`,
].join(""),
publicOrgs: `/${RouteNamespace.PublicOrgs}(/)`,
publicOrg: `/${RouteNamespace.PublicOrgs}/:slug(/)`,
publicCollection: `/${RouteNamespace.PublicOrgs}/:slug/collections/:collectionSlug(/:collectionTab)`,
// Superadmin routes
admin: `/${RouteNamespace.Superadmin}(/)`,
adminUsers: `/${RouteNamespace.Superadmin}/users(/)`,
adminUsersInvite: `/${RouteNamespace.Superadmin}/users/invite`,
adminCrawls: `/${RouteNamespace.Superadmin}/crawls(/)`,
adminCrawl: `/${RouteNamespace.Superadmin}/crawls/crawl/:crawlId`,
// Redirect for https://github.com/webrecorder/browsertrix-cloud/issues/935
awpUploadRedirect: `/${RouteNamespace.PrivateOrgs}/:orgId/artifacts/upload/:uploadId`,
} as const;
export type Routes = typeof ROUTES;