refactor: structure policy

UI.notification-modules-changes
Saeid 4 years ago
parent 2467a49792
commit 6f0e98d649

@ -43,7 +43,7 @@
<v-list class="pt-0" dense>
<v-divider class="Divider"/>
<a :href="item.href" v-for="(item, key) in Items" :key="key">
<template v-if="(!item.permissionClass || $_can(item.permissionClass, false, item.module)) && (!item.moduleName || getModules.find(x => x.slug === item.moduleName))">
<template v-if="(!item.permissionClass || $_can(item.permissionClass, false, item.module)) && ($_hasModule(item.moduleName, true))">
<wm-list-tile :TitleFa="item.titleFa" :TitleEn="item.titleEn" :icon="item.icon" :tileClass="item.tileClass"/>
</template>
</a>
@ -80,8 +80,6 @@ export default {
titleEn: " Product Management ",
titleFa: " مدیریت محصولات ",
icon: "dropbox",
permissionClass: "Product::index",
module: "core",
href: '/product/home',
tileClass: 'cyan-theme',
},

@ -1,5 +1,5 @@
import { mapActions } from "vuex";
import $_can from "@Global/policy/can";
import $_can, {$_hasModule} from "@Global/policy/can";
import $_name from "@Global/utils/category-name/name";
import $_color from "@Global/utils/module-color";
const global = {
@ -25,6 +25,7 @@ const global = {
"$_closeModal"
]),
$_openModal(name, data = {}) {
if (typeof name == 'object') {
this.__openModal(name)
@ -33,9 +34,9 @@ const global = {
}
},
$_can,
$_hasModule,
$_name,
$_color,
}
};

@ -1,15 +1,15 @@
import policyClasses from '@Global/policy';
import { UserService } from "@Global/services/storage.services";
import globalStore from "@Global/store";
import authStore from "@Core/store";
import Routes from "@Global/utils/common/routes"
import Vue from "vue";
export default (model, object, module = null) => {
//Access To All Place For Site Manager
let siteOwner = UserService.get().is_owner == "true";
if (siteOwner || window.location.hostname === Routes.originHostName()) {
return true;
}
// let siteOwner = UserService.get().is_owner == "true";
// if (siteOwner || window.location.hostname === Routes.originHostName()) {
// return true;
// }
let policyClass = model.split('::')[0] + 'Policy';
let policymethod = model.split('::')[1];
@ -18,10 +18,17 @@ export default (model, object, module = null) => {
let permissions = rootPermissions[module] ? Object.values(rootPermissions[module]) : [] ;
//instance policty class
let policy = new policyClasses[policyClass];
let policy = new Vue.prototype.$policiesClasses[policyClass];
if (typeof policy == 'object' && typeof policy[policymethod] == 'function' ) {
return policy[policymethod]({module, rootPermissions, permissions}, object);
} else {
return false;
}
};
export const $_hasModule = (moduleName, defaultParam) => {
if (defaultParam && typeof moduleName === 'undefined') {
return true;
}
return authStore.getters['rolePermission/getModules'].find(x => x.slug === moduleName)
};

@ -1,17 +0,0 @@
import CRMPolicy from '@CRM/policy';
import BlogPolicy from '@Blog/policy';
import PortfolioPolicy from '@Portfolio/policy';
import ProductPolicy from '@Product/policy';
import ServicePolicy from '@Service/policy';
import CorePolicy from '@Core/policy';
import CommonPolicy from '@Common/policy';
export default {
...PortfolioPolicy,
...BlogPolicy,
...CRMPolicy,
...ProductPolicy,
...ServicePolicy,
...CorePolicy,
...CommonPolicy,
}

@ -9,7 +9,7 @@ export default {
}
if (can) {
data.name = 'modal_' + data.name;
if (state.modals.findIndex(x => x.name == data.name) == -1) {
if (state.modals.findIndex(x => x.name === data.name) === -1) {
state.modals.push(data);
let module = data.name.split("_");
if (data.rel) {

@ -0,0 +1,9 @@
import Vue from "vue";
import {CorePolicies} from "@Core/policy";
import CommonPolicy from "@Common/policy";
Vue.prototype.$policiesClasses = {
...CorePolicies,
...CommonPolicy
};
Loading…
Cancel
Save