This commit is contained in:
elforjani13
2021-11-23 15:24:53 +02:00
parent d45005d8c2
commit afee2e90e0
4 changed files with 37 additions and 7 deletions

View File

@@ -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');
});

4
src/components/Can.js Normal file
View File

@@ -0,0 +1,4 @@
import { createCanBoundTo } from '@casl/react';
import ability from '../components/Config/ability';
export default createCanBoundTo(ability);

View File

@@ -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);
}

View File

@@ -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({
/>
<NavbarDivider />
<Button
className={Classes.MINIMAL}
icon={<Icon icon="plus" />}
text={<T id={'new_item'} />}
onClick={onClickNewItem}
/>
{/* <Can I="create" a="Item" ability={ability}> */}
<Button
className={Classes.MINIMAL}
icon={<Icon icon="plus" />}
text={<T id={'new_item'} />}
onClick={onClickNewItem}
/>
{/* </Can> */}
<AdvancedFilterPopover
advancedFilterProps={{
conditions: itemsFilterRoles,