diff --git a/src/common/abilityOption.js b/src/common/abilityOption.js new file mode 100644 index 000000000..d829d52a9 --- /dev/null +++ b/src/common/abilityOption.js @@ -0,0 +1,17 @@ +export const AbilitySubject = { + Item: 'Item', + InventoryAdjustment: 'InventoryAdjustment', +}; + +export const ItemAbility = { + View: 'view', + Create: 'create', + Edit: 'edit', + Delete: 'delete', +}; + +export const InventoryAdjustment = { + View: 'view', + Create: 'create', + Delete: 'delete', +}; diff --git a/src/components/Abilities.js b/src/components/Abilities.js deleted file mode 100644 index 152ea01b0..000000000 --- a/src/components/Abilities.js +++ /dev/null @@ -1,10 +0,0 @@ -import { AbilityBuilder, defineAbility } from '@casl/ability'; -import { createContextualCan } from '@casl/react'; -import { createContext } from 'react'; - -export const AbilityContext = createContext(); -export const Can = createContextualCan(AbilityContext.Consumer); - -export const ability = defineAbility((can, cannot) => { - cannot('Item', 'create'); -}); diff --git a/src/components/Can.js b/src/components/Can.js index 9ba7fe434..63b614036 100644 --- a/src/components/Can.js +++ b/src/components/Can.js @@ -1,4 +1,29 @@ -import { createCanBoundTo } from '@casl/react'; -import ability from '../components/Config/ability'; +import React from 'react'; +import { Ability } from '@casl/ability'; +import { createContextualCan } from '@casl/react'; -export default createCanBoundTo(ability); \ No newline at end of file +import { + ItemAbility, + AbilitySubject, + InventoryAdjustment, +} from '../common/abilityOption'; + +export const AbilityContext = React.createContext(); +export const Can = createContextualCan(AbilityContext.Consumer); + +const AbilityContextProvider = (props) => { + const ability = new Ability([ + { + subject: [AbilitySubject.Item], + action: [ItemAbility.Create, ItemAbility.Edit], + }, + ]); + + return ( + + {props.children} + + ); +}; + +export default AbilityContextProvider; diff --git a/src/components/Config/ability.js b/src/components/Config/ability.js deleted file mode 100644 index 72342959f..000000000 --- a/src/components/Config/ability.js +++ /dev/null @@ -1,10 +0,0 @@ -import { AbilityBuilder } from '@casl/ability'; -// import { AbilitySubject, ItemAbility } from '../../common/abilityOption'; - -export function defineAbilitiesFor(role) { - const { rules, can } = new AbilityBuilder(); - - can('create', 'Item'); - - return new Ability(rules); -} diff --git a/src/components/Dashboard/DashboardProvider.js b/src/components/Dashboard/DashboardProvider.js index 5a5fce966..77195b3c1 100644 --- a/src/components/Dashboard/DashboardProvider.js +++ b/src/components/Dashboard/DashboardProvider.js @@ -1,8 +1,9 @@ import React from 'react'; +import AbilityContextProvider from '../../components/Can'; /** * Dashboard provider. */ export default function DashboardProvider({ children }) { - return children; + return {children}; } diff --git a/src/components/index.js b/src/components/index.js index f30398145..5dc3efeb7 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -59,6 +59,7 @@ import AvaterCell from './AvaterCell'; import { ItemsMultiSelect } from './Items'; import MoreMenuItems from './MoreMenutItems'; +import { Can } from './Can'; export * from './Dialog'; export * from './Menu'; @@ -156,4 +157,5 @@ export { Card, AvaterCell, MoreMenuItems, + Can, }; diff --git a/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js index e0231a3e9..712ca6edd 100644 --- a/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js +++ b/src/containers/Drawers/InventoryAdjustmentDetailDrawer/InventoryAdjustmentDetailActionsBar.js @@ -7,7 +7,11 @@ import { useInventoryAdjustmentDrawerContext } from './InventoryAdjustmentDrawer import withAlertsActions from 'containers/Alert/withAlertActions'; -import { Icon, FormattedMessage as T } from 'components'; +import { Icon, FormattedMessage as T, Can } from 'components'; +import { + InventoryAdjustment, + AbilitySubject, +} from '../../../common/abilityOption'; import { compose } from 'utils'; @@ -26,17 +30,19 @@ function InventoryAdjustmentDetailActionsBar({ }; return ( - - -