@nangazaki/vue-rbac
Version:
Role-Based Access Control (RBAC) implementation for Vue.js
3 lines (2 loc) • 912 B
JavaScript
import{logger as r}from"../utils/logger.js";import{CONFIG_MODE as i}from"../types/config.types.js";const o=[i.STATIC,i.DYNAMIC,i.HYBRID];function e(e){const n={...e};if(e.mode&&!o.includes(e.mode))throw new Error(`Invalid Mode: ${e.mode}. Use 'static', 'dynamic' or 'hybrid'.`);return e.mode!==i.DYNAMIC&&e.mode!==i.HYBRID||e.apiEndpoint||r.warn("Dynamic/hybrid mode requires an apiEndpoint. Using default: /api/rbac/permissions"),e.roles&&Object.entries(e.roles).forEach(([r,i])=>{if(!Array.isArray(i.permissions))throw new Error(`Permissions for role '${r}' must be an array.`);if(i.inherits){if(!Array.isArray(i.inherits))throw new Error(`'inherits' for role '${r}' must be an array.`);i.inherits.forEach(i=>{var o;if(!(null===(o=e.roles)||void 0===o?void 0:o[i]))throw new Error(`Role '${r}' inherits from '${i}' which is not defined.`)})}}),n}export{e as validateConfig};
//# sourceMappingURL=schema.js.map