| 1234567891011121314151617181920212223242526272829303132333435363738 |
- import { Plugin } from '@nuxt/types'
- import { defineAbility } from '@casl/ability'
- declare module '@nuxt/types' {
- interface Context {
- $ability(): void
- }
- }
- export const ability = defineAbility(can => can('read', 'nothing'))
- const abilityPlugin: Plugin = (ctx) => {
- ability.update(ctx.store.state.myProfile.permissions);
- ctx.store.subscribe((mutation) => {
- switch (mutation.type) {
- case 'myProfile/setProfile':
- const permissions = getPermissionByRoles(ctx.store.state.myProfile.roles)
- ctx.store.commit('myProfile/setPermissions', permissions)
- ability.update(permissions);
- break;
- }
- });
- const getPermissionByRoles = (roles:[]) =>{
- for(const key in roles){
- const role = roles[key];
- }
- return [
- { action: 'read', subject: 'books' },
- { action: 'read', subject: 'book' },
- ]
- }
- ctx.$ability = () => {return ability}
- }
- export default abilityPlugin
|