mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-19 06:10:31 +00:00
ability.
This commit is contained in:
10
src/components/Abilities.js
Normal file
10
src/components/Abilities.js
Normal 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
4
src/components/Can.js
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
import { createCanBoundTo } from '@casl/react';
|
||||||
|
import ability from '../components/Config/ability';
|
||||||
|
|
||||||
|
export default createCanBoundTo(ability);
|
||||||
10
src/components/Config/ability.js
Normal file
10
src/components/Config/ability.js
Normal 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);
|
||||||
|
}
|
||||||
@@ -30,6 +30,9 @@ import withSettings from '../Settings/withSettings';
|
|||||||
import { compose } from 'utils';
|
import { compose } from 'utils';
|
||||||
import withSettingsActions from '../Settings/withSettingsActions';
|
import withSettingsActions from '../Settings/withSettingsActions';
|
||||||
|
|
||||||
|
|
||||||
|
import { Can, AbilityContext } from '../../components/Abilities';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Items actions bar.
|
* Items actions bar.
|
||||||
*/
|
*/
|
||||||
@@ -57,6 +60,8 @@ function ItemsActionsBar({
|
|||||||
// Items refresh action.
|
// Items refresh action.
|
||||||
const { refresh } = useRefreshItems();
|
const { refresh } = useRefreshItems();
|
||||||
|
|
||||||
|
const { ability } = React.useContext(AbilityContext);
|
||||||
|
|
||||||
// History context.
|
// History context.
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
|
|
||||||
@@ -101,13 +106,14 @@ function ItemsActionsBar({
|
|||||||
/>
|
/>
|
||||||
<NavbarDivider />
|
<NavbarDivider />
|
||||||
|
|
||||||
<Button
|
{/* <Can I="create" a="Item" ability={ability}> */}
|
||||||
className={Classes.MINIMAL}
|
<Button
|
||||||
icon={<Icon icon="plus" />}
|
className={Classes.MINIMAL}
|
||||||
text={<T id={'new_item'} />}
|
icon={<Icon icon="plus" />}
|
||||||
onClick={onClickNewItem}
|
text={<T id={'new_item'} />}
|
||||||
/>
|
onClick={onClickNewItem}
|
||||||
|
/>
|
||||||
|
{/* </Can> */}
|
||||||
<AdvancedFilterPopover
|
<AdvancedFilterPopover
|
||||||
advancedFilterProps={{
|
advancedFilterProps={{
|
||||||
conditions: itemsFilterRoles,
|
conditions: itemsFilterRoles,
|
||||||
|
|||||||
Reference in New Issue
Block a user