UNPKG

vue-zo

Version:

A Vuejs/Nuxt plugin that allows you to use roles and permissions in your components (setup macro & option API), also compatible as middleware, methods, composition-api and Pinia

53 lines 4.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VueZo = void 0; const validators_1 = require("./utils/validators"); const Zo_1 = require("./core/Zo"); const registerDirectives = (app, newSyntax = false) => { const lifecycleName = newSyntax ? 'mounted' : 'inserted'; const directiveOptions = (condition) => [ condition, { [lifecycleName]: validators_1.isConditionPassed(app, condition), }, ]; app.directive(...directiveOptions('role')); app.directive(...directiveOptions('permission')); app.directive(...directiveOptions('can')); // Alias for "v-permission" app.directive('role-or-permission', { [lifecycleName]: validators_1.isConditionPassed(app, (binding) => { const values = binding.value.split('|'); const role = values[0]; const permission = values[1]; return app.$zo.hasRole(role) || app.$zo.hasPermission(permission); }), }); }; const registerOnVue2 = (app, instance) => { Object.defineProperty(app.prototype, '$zo', { get() { return instance; }, }); app.$zo = instance; registerDirectives(app, false); }; const registerOnVue3 = (app, instance) => { app.config.globalProperties.$zo = instance; app.$zo = instance; app.provide('$zo', instance); registerDirectives(app, true); }; exports.VueZo = { install(Vue, options = {}) { const isVue3 = !!Vue.config.globalProperties; const zo = new Zo_1.Zo(options); if (isVue3) { registerOnVue3(Vue, zo); } else { registerOnVue2(Vue, zo); } }, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsbURBQXVEO0FBQ3ZELGtDQUErQjtBQUUvQixNQUFNLGtCQUFrQixHQUFHLENBQUMsR0FBaUIsRUFBRSxTQUFTLEdBQUcsS0FBSyxFQUFFLEVBQUU7SUFDbEUsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztJQUV6RCxNQUFNLGdCQUFnQixHQUFHLENBQUMsU0FBaUIsRUFBRSxFQUFFLENBQUM7UUFDOUMsU0FBUztRQUNUO1lBQ0UsQ0FBQyxhQUFhLENBQUMsRUFBRSw4QkFBaUIsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDO1NBQ25EO0tBQ0YsQ0FBQztJQUVGLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ2pELEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsMkJBQTJCO0lBQ3RFLEdBQUcsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUU7UUFDbEMsQ0FBQyxhQUFhLENBQUMsRUFBRSw4QkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFnQixFQUFFLEVBQUU7WUFDM0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUU3QixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQztLQUNILENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBaUIsRUFBRSxRQUFZLEVBQUUsRUFBRTtJQUN6RCxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxFQUFFO1FBQzFDLEdBQUc7WUFDRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0lBQ0gsR0FBRyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUM7SUFDbkIsa0JBQWtCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUVGLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBaUIsRUFBRSxRQUFZLEVBQUUsRUFBRTtJQUN6RCxHQUFHLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUM7SUFDM0MsR0FBRyxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUM7SUFFbkIsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0Isa0JBQWtCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHO0lBQ25CLE9BQU8sQ0FBQyxHQUFRLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDNUIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7UUFDN0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxPQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFM0IsSUFBSSxNQUFNLEVBQUU7WUFDVixjQUFjLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3pCO2FBQU07WUFDTCxjQUFjLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQ3pCO0lBQ0gsQ0FBQztDQUNGLENBQUMifQ==