2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-04-29 12:06:44 +00:00
Oliver d4cd7d4a72
[PUI] Tab permissions (#7692)
* [PUI] Hide main nav tabs based on user roles

* Add permission checks on top-level pages

* Specify return type
2024-07-19 16:54:55 +10:00

139 lines
3.5 KiB
TypeScript

import { Trans } from '@lingui/macro';
import { openContextModal } from '@mantine/modals';
import { DocumentationLinkItem } from '../components/items/DocumentationLinks';
import { StylishText } from '../components/items/StylishText';
import { UserRoles } from '../enums/Roles';
import { IS_DEV_OR_DEMO } from '../main';
export const footerLinks = [
{
link: 'https://inventree.org/',
label: <Trans>Website</Trans>,
key: 'website'
},
{
link: 'https://github.com/invenhost/InvenTree',
label: <Trans>GitHub</Trans>,
key: 'github'
},
{
link: 'https://demo.inventree.org/',
label: <Trans>Demo</Trans>,
key: 'demo'
}
];
export const navTabs = [
{ text: <Trans>Home</Trans>, name: 'home' },
{ text: <Trans>Dashboard</Trans>, name: 'dashboard' },
{ text: <Trans>Parts</Trans>, name: 'part', role: UserRoles.part },
{ text: <Trans>Stock</Trans>, name: 'stock', role: UserRoles.stock },
{ text: <Trans>Build</Trans>, name: 'build', role: UserRoles.build },
{
text: <Trans>Purchasing</Trans>,
name: 'purchasing',
role: UserRoles.purchase_order
},
{ text: <Trans>Sales</Trans>, name: 'sales', role: UserRoles.sales_order }
];
if (IS_DEV_OR_DEMO) {
navTabs.push({ text: <Trans>Playground</Trans>, name: 'playground' });
}
export const docLinks = {
app: 'https://docs.inventree.org/app/',
getting_started: 'https://docs.inventree.org/en/latest/getting_started/',
api: 'https://docs.inventree.org/en/latest/api/api/',
developer: 'https://docs.inventree.org/en/latest/develop/starting/',
faq: 'https://docs.inventree.org/en/latest/faq/'
};
export const navDocLinks: DocumentationLinkItem[] = [
{
id: 'getting_started',
title: <Trans>Getting Started</Trans>,
description: <Trans>Getting started with InvenTree</Trans>,
link: docLinks.getting_started,
placeholder: true
},
{
id: 'api',
title: <Trans>API</Trans>,
description: <Trans>InvenTree API documentation</Trans>,
link: docLinks.api
},
{
id: 'developer',
title: <Trans>Developer Manual</Trans>,
description: <Trans>InvenTree developer manual</Trans>,
link: docLinks.developer
},
{
id: 'faq',
title: <Trans>FAQ</Trans>,
description: <Trans>Frequently asked questions</Trans>,
link: docLinks.faq
}
];
export function serverInfo() {
return openContextModal({
modal: 'info',
title: (
<StylishText size="xl">
<Trans>System Information</Trans>
</StylishText>
),
size: 'xl',
innerProps: {}
});
}
export function aboutInvenTree() {
return openContextModal({
modal: 'about',
title: (
<StylishText size="xl">
<Trans>About InvenTree</Trans>
</StylishText>
),
size: 'xl',
innerProps: {}
});
}
export function licenseInfo() {
return openContextModal({
modal: 'license',
title: (
<StylishText size="xl">
<Trans>License Information</Trans>
</StylishText>
),
size: 'xl',
innerProps: {}
});
}
export const aboutLinks: DocumentationLinkItem[] = [
{
id: 'instance',
title: <Trans>System Information</Trans>,
description: <Trans>About this Inventree instance</Trans>,
action: serverInfo
},
{
id: 'about',
title: <Trans>About InvenTree</Trans>,
description: <Trans>About the InvenTree org</Trans>,
action: aboutInvenTree
},
{
id: 'licenses',
title: <Trans>Licenses</Trans>,
description: <Trans>Licenses for dependencies of the service</Trans>,
action: licenseInfo
}
];