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

118 lines 8.95 kB
"use strict"; var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to set private field on non-instance"); } privateMap.set(receiver, value); return value; }; var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) { if (!privateMap.has(receiver)) { throw new TypeError("attempted to get private field on non-instance"); } return privateMap.get(receiver); }; var _canPersistent, _roles, _permissions, _superRole; Object.defineProperty(exports, "__esModule", { value: true }); exports.Zo = void 0; const strings_1 = require("../utils/strings"); class Zo { constructor(options = {}) { _canPersistent.set(this, false); _roles.set(this, []); _permissions.set(this, []); _superRole.set(this, undefined); /* |------------------------------------------------------------------------- | Setters |------------------------------------------------------------------------- | | These functions controls the "permissions" and "roles" provided | by Vue Gates, or from a custom array. | */ this.setRoles = (roles) => { __classPrivateFieldSet(this, _roles, roles); if (__classPrivateFieldGet(this, _canPersistent)) { localStorage.setItem('roles', JSON.stringify(roles)); } }; this.setPermissions = (permissions) => { __classPrivateFieldSet(this, _permissions, permissions); if (__classPrivateFieldGet(this, _canPersistent)) { localStorage.setItem('permissions', JSON.stringify(permissions)); } }; /* |------------------------------------------------------------------------- | Getters |------------------------------------------------------------------------- | | These functions return the "permissions" and "roles" stored. | This is useful when you want list all data. | */ this.getRoles = () => __classPrivateFieldGet(this, _roles); this.getPermissions = () => __classPrivateFieldGet(this, _permissions); this.isSuperUser = () => __classPrivateFieldGet(this, _superRole) && __classPrivateFieldGet(this, _roles).includes(__classPrivateFieldGet(this, _superRole)); /* |------------------------------------------------------------------------- | Directives |------------------------------------------------------------------------- | | These is a group of functions for Vue Directives. | This is useful when you want valid a "permission" or "role" | programmatically. | */ // Roles this.hasRole = (role) => this.isSuperUser() || __classPrivateFieldGet(this, _roles).includes(role); this.unlessRole = (role) => !this.hasRole(role); this.hasAnyRole = (values) => { if (this.isSuperUser()) { return true; } const roles = values.split('|'); return roles.some((role) => this.hasRole(role)); }; this.hasAllRoles = (values) => { if (this.isSuperUser()) { return true; } const roles = values.split('|'); return roles.every((role) => this.hasRole(role)); }; // Permissions this.hasPermission = (permission) => this.isSuperUser() || !!__classPrivateFieldGet(this, _permissions).find((wildcard) => strings_1.match(permission, wildcard)); this.unlessPermission = (permission) => !this.hasPermission(permission); this.hasAnyPermission = (values) => { if (this.isSuperUser()) { return true; } const permissions = values.split('|'); return permissions.some((permission) => this.hasPermission(permission)); }; this.hasAllPermissions = (values) => { if (this.isSuperUser()) { return true; } const permissions = values.split('|'); return permissions.every((permission) => this.hasPermission(permission)); }; const canPersistent = options.persistent; const roles = canPersistent ? JSON.parse(localStorage.getItem('roles')) : []; const permissions = canPersistent ? JSON.parse(localStorage.getItem('permissions')) : []; __classPrivateFieldSet(this, _canPersistent, canPersistent); __classPrivateFieldSet(this, _roles, roles); __classPrivateFieldSet(this, _permissions, permissions); __classPrivateFieldSet(this, _superRole, options.superRole); } } exports.Zo = Zo; _canPersistent = new WeakMap(), _roles = new WeakMap(), _permissions = new WeakMap(), _superRole = new WeakMap(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiWm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29yZS9aby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUF5QztBQUd6QyxNQUFhLEVBQUU7SUFTYixZQUFZLFVBQW9CLEVBQUU7UUFSbEMseUJBQWlCLEtBQUssRUFBQztRQUV2QixpQkFBbUIsRUFBRSxFQUFDO1FBRXRCLHVCQUF5QixFQUFFLEVBQUM7UUFFNUIscUJBQWlDLFNBQVMsRUFBQztRQWlCM0M7Ozs7Ozs7O1VBUUU7UUFFRixhQUFRLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtZQUM3Qix1QkFBQSxJQUFJLFVBQVUsS0FBSyxFQUFDO1lBQ3BCLGtEQUF5QjtnQkFDdkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3REO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsbUJBQWMsR0FBRyxDQUFDLFdBQXFCLEVBQUUsRUFBRTtZQUN6Qyx1QkFBQSxJQUFJLGdCQUFnQixXQUFXLEVBQUM7WUFDaEMsa0RBQXlCO2dCQUN2QixZQUFZLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDbEU7UUFDSCxDQUFDLENBQUM7UUFFRjs7Ozs7Ozs7VUFRRTtRQUVGLGFBQVEsR0FBRyxHQUFHLEVBQUUscUNBQVksQ0FBQztRQUU3QixtQkFBYyxHQUFHLEdBQUcsRUFBRSwyQ0FBa0IsQ0FBQztRQUV6QyxnQkFBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLDRDQUFtQixxQ0FBWSxRQUFRLDBDQUFpQixDQUFDO1FBRTdFOzs7Ozs7Ozs7VUFTRTtRQUVGLFFBQVE7UUFDUixZQUFPLEdBQUcsQ0FBQyxJQUF1QixFQUFFLEVBQUUsQ0FDcEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLHFDQUFZLFFB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