diff --git a/src/common/abilityOption.js b/src/common/abilityOption.js index 9b140a5ff..5661b6167 100644 --- a/src/common/abilityOption.js +++ b/src/common/abilityOption.js @@ -115,6 +115,7 @@ export const Cashflow_Abilities = { }; export const Report_Abilities = { + ALL:'all', READ_BALANCE_SHEET: 'read-balance-sheet', READ_TRIAL_BALANCE_SHEET: 'read-trial-balance-sheet', READ_PROFIT_LOSS: 'read-profit-loss', diff --git a/src/common/homepageOptions.js b/src/common/homepageOptions.js index 6f61b7172..1a6c5440f 100644 --- a/src/common/homepageOptions.js +++ b/src/common/homepageOptions.js @@ -14,6 +14,7 @@ import { Manual_Journal_Abilities, Expense_Abilities, Item_Abilities, + Report_Abilities, } from '../common/abilityOption'; export const accountsReceivable = [ @@ -135,6 +136,8 @@ export const financialAccounting = [ ), link: '/financial-reports', + subject: AbilitySubject.Report, + ability: Report_Abilities.ALL, }, ], }, diff --git a/src/containers/FinancialStatements/FilterFinancialReports.js b/src/containers/FinancialStatements/FilterFinancialReports.js index 4daa38501..ea3e8c1a8 100644 --- a/src/containers/FinancialStatements/FilterFinancialReports.js +++ b/src/containers/FinancialStatements/FilterFinancialReports.js @@ -1,23 +1,23 @@ import { isEmpty } from 'lodash'; import { useAbilityContext } from '../../hooks'; -function useFilterFinancialReports(financial) { +function useFilterFinancialReports(financialSection) { const ability = useAbilityContext(); - const seaction = financial - .map((seaction) => { - const reports = seaction.reports.filter((report) => { + const section = financialSection + .map((section) => { + const reports = section.reports.filter((report) => { return ability.can(report.ability, report.subject); }); return { - sectionTitle: seaction.sectionTitle, + sectionTitle: section.sectionTitle, reports, }; }) .filter(({ reports }) => !isEmpty(reports)); - return seaction; + return section; } export default useFilterFinancialReports; diff --git a/src/containers/Homepage/ShortcutBoxesSection.js b/src/containers/Homepage/ShortcutBoxesSection.js index cf712e952..d9bcb90f0 100644 --- a/src/containers/Homepage/ShortcutBoxesSection.js +++ b/src/containers/Homepage/ShortcutBoxesSection.js @@ -3,6 +3,7 @@ import { Link } from 'react-router-dom'; import { For } from 'components'; import 'style/pages/FinancialStatements/FinancialSheets.scss'; +import { useFilterShortcutBoxesSection } from './components'; function ShortcutBox({ title, link, description }) { return ( @@ -27,5 +28,6 @@ function ShortcutBoxes({ sectionTitle, shortcuts }) { } export default function ShortcutBoxesSection({ section }) { - return ; + const BoxSection = useFilterShortcutBoxesSection(section); + return ; } diff --git a/src/containers/Homepage/components.js b/src/containers/Homepage/components.js new file mode 100644 index 000000000..b2701ef28 --- /dev/null +++ b/src/containers/Homepage/components.js @@ -0,0 +1,18 @@ +import { isEmpty } from 'lodash'; +import { useAbilityContext } from '../../hooks'; + +export const useFilterShortcutBoxesSection = (section) => { + const ability = useAbilityContext(); + + return section + .map(({ sectionTitle, shortcuts }) => { + const shortcut = shortcuts.filter((shortcuts) => { + return ability.can(shortcuts.ability, shortcuts.subject); + }); + return { + sectionTitle: sectionTitle, + shortcuts: shortcut, + }; + }) + .filter(({ shortcuts }) => !isEmpty(shortcuts)); +};