diff --git a/src/components/Abilities.js b/src/components/Abilities.js new file mode 100644 index 000000000..152ea01b0 --- /dev/null +++ b/src/components/Abilities.js @@ -0,0 +1,10 @@ +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 new file mode 100644 index 000000000..9ba7fe434 --- /dev/null +++ b/src/components/Can.js @@ -0,0 +1,4 @@ +import { createCanBoundTo } from '@casl/react'; +import ability from '../components/Config/ability'; + +export default createCanBoundTo(ability); \ No newline at end of file diff --git a/src/components/Config/ability.js b/src/components/Config/ability.js new file mode 100644 index 000000000..72342959f --- /dev/null +++ b/src/components/Config/ability.js @@ -0,0 +1,10 @@ +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/containers/Items/ItemsActionsBar.js b/src/containers/Items/ItemsActionsBar.js index 67e30c732..e882ac19d 100644 --- a/src/containers/Items/ItemsActionsBar.js +++ b/src/containers/Items/ItemsActionsBar.js @@ -30,6 +30,9 @@ import withSettings from '../Settings/withSettings'; import { compose } from 'utils'; import withSettingsActions from '../Settings/withSettingsActions'; + +import { Can, AbilityContext } from '../../components/Abilities'; + /** * Items actions bar. */ @@ -57,6 +60,8 @@ function ItemsActionsBar({ // Items refresh action. const { refresh } = useRefreshItems(); + const { ability } = React.useContext(AbilityContext); + // History context. const history = useHistory(); @@ -101,13 +106,14 @@ function ItemsActionsBar({ /> -