| 1234567891011121314151617181920212223242526272829303132 |
- import { Plugin } from '@nuxt/types'
- import { Ability } from '@casl/ability'
- import { $abilitiesUtils } from "~/services/rights/abilitiesUtils";
- declare module '@nuxt/types' {
- interface Context {
- $ability(): Ability
- }
- }
- export const ability = new Ability();
- const abilityPlugin: Plugin = (ctx) => {
- ability.update(ctx.store.state.profile.access.abilities);
- const unsubscribe = ctx.store.subscribeAction({
- after: (action, state) => {
- switch (action.type) {
- case 'profile/organization/setProfile':
- const abilitiesUtils = $abilitiesUtils(ctx.store, ability)
- const abilities = abilitiesUtils.getAbilities();
- ctx.store.commit('profile/access/setAbilities', abilities)
- ability.update(abilities);
- unsubscribe()
- break;
- }
- }
- })
- ctx.$ability = () => {return ability}
- }
- export default abilityPlugin
|