mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-16 04:40:32 +00:00
532 lines
17 KiB
JavaScript
532 lines
17 KiB
JavaScript
import { chain } from 'lodash';
|
|
import intl from 'react-intl-universal';
|
|
import {
|
|
AbilitySubject,
|
|
AccountAction,
|
|
BillAction,
|
|
CreditNoteAction,
|
|
CustomerAction,
|
|
ExpenseAction,
|
|
ItemAction,
|
|
ManualJournalAction,
|
|
PaymentMadeAction,
|
|
PaymentReceiveAction,
|
|
ReportsAction,
|
|
SaleEstimateAction,
|
|
SaleInvoiceAction,
|
|
SaleReceiptAction,
|
|
VendorAction,
|
|
VendorCreditAction,
|
|
} from './abilityOption';
|
|
|
|
export const ModulePermissionsStyle = {
|
|
Columns: 'columns',
|
|
Vertical: 'vertical',
|
|
};
|
|
|
|
const PermissionColumn = {
|
|
View: 'view',
|
|
Create: 'create',
|
|
Delete: 'delete',
|
|
Edit: 'edit',
|
|
};
|
|
|
|
export const getPermissionsSchema = () => [
|
|
{
|
|
label: intl.get('permissions.items_inventory'),
|
|
type: ModulePermissionsStyle.Columns,
|
|
serviceFullAccess: true,
|
|
columns: [
|
|
{ label: intl.get('permissions.column.view'), key: 'view' },
|
|
{ label: intl.get('permissions.column.create'), key: 'create' },
|
|
{ label: intl.get('permissions.column.edit'), key: 'edit' },
|
|
{ label: intl.get('permissions.column.delete'), key: 'delete' },
|
|
],
|
|
services: [
|
|
{
|
|
label: intl.get('permissions.items'),
|
|
subject: AbilitySubject.Item,
|
|
permissions: [
|
|
{ label: 'View', key: ItemAction.View, relatedColumn: PermissionColumn.View },
|
|
{ label: 'Create', key: ItemAction.Create, relatedColumn: PermissionColumn.Create, depend: [{ key: ItemAction.View }] },
|
|
{ label: 'Edit', key: ItemAction.Edit, relatedColumn: PermissionColumn.Edit, depend: [{ key: ItemAction.Create }], },
|
|
{ label: 'Delete', key: ItemAction.Delete, relatedColumn: PermissionColumn.Delete, depend: [{ key: ItemAction.Edit }] },
|
|
],
|
|
},
|
|
{
|
|
label: intl.get('permissions.inventory_adjustment'),
|
|
subject: AbilitySubject.InventoryAdjustment,
|
|
permissions: [
|
|
{ label: 'View', key: ItemAction.View, relatedColumn: PermissionColumn.View },
|
|
{ label: 'Create', key: ItemAction.Create, relatedColumn: PermissionColumn.Create, depend: [{ key: ItemAction.View }] },
|
|
{ label: 'Edit', key: ItemAction.Edit, relatedColumn: PermissionColumn.Edit, depend: [{ key: ItemAction.Create }] },
|
|
{ label: 'Delete', key: ItemAction.Delete, relatedColumn: PermissionColumn.Delete, depend: [{ key: ItemAction.Edit }] },
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Contacts',
|
|
type: ModulePermissionsStyle.Columns,
|
|
serviceFullAccess: true,
|
|
moduleFullAccess: true,
|
|
columns: [
|
|
{ label: 'View', key: 'view' },
|
|
{ label: 'Create', key: 'create' },
|
|
{ label: 'Edit', key: 'edit' },
|
|
{ label: 'Delete', key: 'delete' },
|
|
],
|
|
services: [
|
|
{
|
|
label: 'Customers',
|
|
subject: AbilitySubject.Customer,
|
|
permissions: [
|
|
{ label: 'View', key: CustomerAction.View, relatedColumn: PermissionColumn.View, },
|
|
{ label: 'Create', key: CustomerAction.Create, relatedColumn: PermissionColumn.Create, depend: [{ key: CustomerAction.View }] },
|
|
{ label: 'Edit', key: CustomerAction.Edit, relatedColumn: PermissionColumn.Edit, depend: [{ key: CustomerAction.Create }] },
|
|
{ label: 'Delete', key: CustomerAction.Delete, relatedColumn: PermissionColumn.Delete, depend: [{ key: CustomerAction.Edit }] },
|
|
],
|
|
},
|
|
{
|
|
label: 'Vendors',
|
|
subject: AbilitySubject.Vendor,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: VendorAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: VendorAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend: [{ key: VendorAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: VendorAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend: [{ key: VendorAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: VendorAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend: [{ key: VendorAction.Edit }]
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Sales',
|
|
type: ModulePermissionsStyle.Columns,
|
|
serviceFullAccess: true,
|
|
moduleFullAccess: true,
|
|
columns: [
|
|
{ label: 'View', key: 'view' },
|
|
{ label: 'Create', key: 'create' },
|
|
{ label: 'Edit', key: 'edit' },
|
|
{ label: 'Delete', key: 'delete' },
|
|
],
|
|
services: [
|
|
{
|
|
label: 'Sale Invoice',
|
|
subject: AbilitySubject.Invoice,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: SaleInvoiceAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: SaleInvoiceAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend: [{ key: SaleInvoiceAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: SaleInvoiceAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend: [{ key: SaleInvoiceAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: SaleInvoiceAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend: [{ key: SaleInvoiceAction.Edit }]
|
|
},
|
|
{ label: 'Written-off invoice', key: SaleInvoiceAction.Writeoff, depend:[{ key: SaleInvoiceAction.Edit }] },
|
|
],
|
|
},
|
|
{
|
|
label: 'Sale Estimate',
|
|
subject: AbilitySubject.Estimate,
|
|
permissions: [
|
|
{ label: 'View', key: SaleEstimateAction.View, relatedColumn: PermissionColumn.View, },
|
|
{ label: 'Create', key: SaleEstimateAction.Create, relatedColumn: PermissionColumn.Create, depend:[{ key: SaleEstimateAction.View }] },
|
|
{ label: 'Edit', key: SaleEstimateAction.Edit, relatedColumn: PermissionColumn.Edit, depend:[{ key: SaleEstimateAction.Create }] },
|
|
{ label: 'Delete', key: SaleEstimateAction.Delete, relatedColumn: PermissionColumn.Delete, depend:[{ key: SaleEstimateAction.Edit }] },
|
|
],
|
|
},
|
|
{
|
|
label: 'Sale Receipt',
|
|
subject: AbilitySubject.Receipt,
|
|
permissions: [
|
|
{ label: 'View', key: SaleReceiptAction.View, relatedColumn: PermissionColumn.View, },
|
|
{
|
|
label: 'Create',
|
|
key: SaleReceiptAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend:[{ key: SaleReceiptAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: SaleReceiptAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend:[{ key: SaleReceiptAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: SaleReceiptAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend:[{ key: SaleReceiptAction.Edit }]
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Credit note',
|
|
subject: AbilitySubject.CreditNote,
|
|
permissions: [
|
|
{ label: 'View', key: CreditNoteAction.View, relatedColumn: PermissionColumn.View },
|
|
{ label: 'Create', key: CreditNoteAction.Create, relatedColumn: PermissionColumn.Create, depend:[{ key: CreditNoteAction.View }] },
|
|
{ label: 'Edit', key: CreditNoteAction.Edit, relatedColumn: PermissionColumn.Edit, depend:[{ key: CreditNoteAction.Create }] },
|
|
{ label: 'Delete', key: CreditNoteAction.Delete, relatedColumn: PermissionColumn.Delete, depend:[{ key: CreditNoteAction.Edit }] },
|
|
{ label: 'Refund credit note', key: CreditNoteAction.Refund, depend:[{ key: CreditNoteAction.View }] },
|
|
],
|
|
},
|
|
{
|
|
label: 'Payment Receive',
|
|
subject: AbilitySubject.PaymentReceive,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: PaymentReceiveAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: PaymentReceiveAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend:[{ key: PaymentReceiveAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: PaymentReceiveAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend:[{ key: PaymentReceiveAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: PaymentReceiveAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend:[{ key: PaymentReceiveAction.Edit }]
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Purchases',
|
|
type: ModulePermissionsStyle.Columns,
|
|
serviceFullAccess: true,
|
|
moduleFullAccess: true,
|
|
columns: [
|
|
{ label: 'View', key: 'view' },
|
|
{ label: 'Create', key: 'create' },
|
|
{ label: 'Edit', key: 'edit' },
|
|
{ label: 'Delete', key: 'delete' },
|
|
],
|
|
services: [
|
|
{
|
|
label: 'Bills',
|
|
subject: AbilitySubject.Bill,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: BillAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: BillAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend:[{ key: BillAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: BillAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend:[{ key: BillAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: BillAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend:[{ key: BillAction.Edit }]
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Vendor Credits',
|
|
subject: AbilitySubject.VendorCredit,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: VendorCreditAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: VendorCreditAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend: [{ key: VendorCreditAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: VendorCreditAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend: [{ key: VendorCreditAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: VendorCreditAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend: [{ key: VendorCreditAction.Edit }]
|
|
},
|
|
{ label: 'Refund vendor credit', key: VendorCreditAction.Refund, depend: [{ key: VendorCreditAction.View }] },
|
|
],
|
|
},
|
|
{
|
|
label: 'Payment Made',
|
|
subject: AbilitySubject.PaymentMade,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: PaymentMadeAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: PaymentMadeAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend: [{ key: PaymentMadeAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: PaymentMadeAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend: [{ key: PaymentMadeAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: PaymentMadeAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend: [{ key: PaymentMadeAction.Edit }]
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Financial Accounting',
|
|
type: ModulePermissionsStyle.Columns,
|
|
serviceFullAccess: true,
|
|
moduleFullAccess: true,
|
|
columns: [
|
|
{ label: 'View', key: 'view' },
|
|
{ label: 'Create', key: 'create' },
|
|
{ label: 'Edit', key: 'edit' },
|
|
{ label: 'Delete', key: 'delete' },
|
|
],
|
|
services: [
|
|
{
|
|
label: 'Manual Journals',
|
|
subject: AbilitySubject.ManualJournal,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: ManualJournalAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: ManualJournalAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend: [{ key: ManualJournalAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: ManualJournalAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend: [{ key: ManualJournalAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: ManualJournalAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend: [{ key: ManualJournalAction.Edit }]
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Chart of Accounts',
|
|
subject: AbilitySubject.Account,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: AccountAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: AccountAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend: [{ key: AccountAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: AccountAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend: [{ key: AccountAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: AccountAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend: [{ key: AccountAction.Edit }]
|
|
},
|
|
{
|
|
label: 'Transactions locking',
|
|
key: AccountAction.TransactionsLocking,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Expenses',
|
|
subject: AbilitySubject.Expense,
|
|
permissions: [
|
|
{
|
|
label: 'View',
|
|
key: ExpenseAction.View,
|
|
relatedColumn: PermissionColumn.View,
|
|
},
|
|
{
|
|
label: 'Create',
|
|
key: ExpenseAction.Create,
|
|
relatedColumn: PermissionColumn.Create,
|
|
depend: [{ key: ExpenseAction.View }]
|
|
},
|
|
{
|
|
label: 'Edit',
|
|
key: ExpenseAction.Edit,
|
|
relatedColumn: PermissionColumn.Edit,
|
|
depend: [{ key: ExpenseAction.Create }]
|
|
},
|
|
{
|
|
label: 'Delete',
|
|
key: ExpenseAction.Delete,
|
|
relatedColumn: PermissionColumn.Delete,
|
|
depend: [{ key: ExpenseAction.Edit }]
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Financial Reports',
|
|
type: ModulePermissionsStyle.Vertical,
|
|
serviceFullAccess: true,
|
|
moduleFullAccess: true,
|
|
services: [
|
|
{
|
|
label: 'Financial reprots',
|
|
subject: AbilitySubject.Report,
|
|
permissions: [
|
|
{ label: 'Balance sheet', key: ReportsAction.READ_BALANCE_SHEET },
|
|
{
|
|
label: 'Trial Balance sheet',
|
|
key: ReportsAction.READ_TRIAL_BALANCE_SHEET,
|
|
},
|
|
{ label: 'Profit & Loss sheet', key: ReportsAction.READ_PROFIT_LOSS },
|
|
{ label: 'Cash flow sheet', key: ReportsAction.READ_CASHFLOW },
|
|
{ label: 'Journal sheet', key: ReportsAction.READ_JOURNAL },
|
|
{ label: 'General ledger', key: ReportsAction.READ_GENERAL_LEDGET },
|
|
{
|
|
label: 'A/R Aging Summary report',
|
|
key: ReportsAction.READ_AR_AGING_SUMMARY,
|
|
},
|
|
{
|
|
label: 'A/P Aging Summary report',
|
|
key: ReportsAction.READ_AP_AGING_SUMMARY,
|
|
},
|
|
{
|
|
label: 'Purchases by items',
|
|
key: ReportsAction.READ_PURCHASES_BY_ITEMS,
|
|
},
|
|
{ label: 'Sales by items', key: ReportsAction.READ_SALES_BY_ITEMS },
|
|
{
|
|
label: 'Customers transactions',
|
|
key: ReportsAction.READ_CUSTOMERS_TRANSACTIONS,
|
|
},
|
|
{
|
|
label: 'Vendors transactions',
|
|
key: ReportsAction.READ_VENDORS_TRANSACTIONS,
|
|
},
|
|
{
|
|
label: 'Customers summary balance',
|
|
key: ReportsAction.READ_CUSTOMERS_SUMMARY_BALANCE,
|
|
},
|
|
{
|
|
label: 'Vendors summary balance',
|
|
key: ReportsAction.READ_VENDORS_SUMMARY_BALANCE,
|
|
},
|
|
{
|
|
label: 'Inventory valuation summary',
|
|
key: ReportsAction.READ_INVENTORY_VALUATION_SUMMARY,
|
|
},
|
|
{
|
|
label: 'Inventory items details',
|
|
key: ReportsAction.READ_INVENTORY_ITEM_DETAILS,
|
|
},
|
|
{
|
|
label: 'Cashflow account transactions',
|
|
key: ReportsAction.READ_CASHFLOW_ACCOUNT_TRANSACTION,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
|
|
export function getPermissionsSchemaService(subject) {
|
|
const permissions = getPermissionsSchema();
|
|
|
|
return chain(permissions)
|
|
.map((perm) => perm.services)
|
|
.flatten()
|
|
.find((service) => service.subject === subject)
|
|
.value();
|
|
}
|
|
|
|
export function getPermissionsSchemaServices() {
|
|
const permissions = getPermissionsSchema();
|
|
|
|
return chain(permissions)
|
|
.map((module) => module.services)
|
|
.flatten()
|
|
.value();
|
|
}
|