@nangazaki/vue-rbac
Version:
Role-Based Access Control (RBAC) implementation for Vue.js
3 lines (2 loc) • 1.08 kB
JavaScript
import{defaultConfig as s}from"./config/default.js";import{validateConfig as e}from"./config/schema.js";import{getAllPermissionsForRole as o}from"./core/role.js";import{loadDynamicConfig as r}from"./loaders/dynamic.js";import{loadStaticConfig as i}from"./loaders/static.js";import{createStore as t}from"./store.js";import{CONFIG_MODE as a}from"./types/config.types.js";function n(n={}){const m=e({...s,...n}),c=t(m.roles);let l=new Set;function f(){const s=new Set;for(const e of c.userRoles){o(e,c.roles).forEach((e=>s.add(e)))}l=s}return{options:m,state:c,async init(){if(!c.isInitialized)switch(c.isInitialized=!0,m.mode){case a.STATIC:await i(c,m);break;case a.DYNAMIC:await r(c,m);break;case a.HYBRID:await i(c,m),await r(c,m,!0)}return f(),c.roles},fetchRolesAndPermissions:async()=>(await r(c,m),f(),c.roles),setUserRoles(s){c.userRoles=Array.isArray(s)?s:[s],f()},hasPermission:s=>l.has(s),hasRole:s=>c.userRoles.includes(s),hasAnyPermission:s=>s.some((s=>l.has(s))),hasAllPermissions:s=>s.every((s=>l.has(s)))}}export{n as createRBAC};
//# sourceMappingURL=rbac.js.map