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
JavaScript
;
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==