permission 100%

pull/1/head
Saeid 5 years ago
parent 8e8e70e87e
commit ed6137ee39

@ -1,9 +1,9 @@
{ {
"/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=620be3c9e76cee2a03aa", "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=37070ad2465c7e560c3f",
"/js/vue/Home/app.js": "/js/vue/Home/app.js?id=74e9f77c3f4b27f1064e", "/js/vue/Home/app.js": "/js/vue/Home/app.js?id=a854401b96e5ea8e97d0",
"/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=5796dc8e39461ba7c663", "/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=2c5cbf260d63c1cafbbe",
"/js/vue/Product/app.js": "/js/vue/Product/app.js?id=08d8ea1fbfc6525f583e", "/js/vue/Product/app.js": "/js/vue/Product/app.js?id=944d070c189a2798d4cf",
"/js/vue/SMS/app.js": "/js/vue/SMS/app.js?id=b24a120ac1950107365e", "/js/vue/SMS/app.js": "/js/vue/SMS/app.js?id=ce7afc9f2fc462ece42d",
"/js/vue/Service/app.js": "/js/vue/Service/app.js?id=d00caa51db85115da349", "/js/vue/Service/app.js": "/js/vue/Service/app.js?id=33e68750bbf5de9c2426",
"/js/vue/User/app.js": "/js/vue/User/app.js?id=87d8a0228fc5b7ff5bcd" "/js/vue/User/app.js": "/js/vue/User/app.js?id=6a826e0351a3a419aed6"
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 343 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

@ -43,7 +43,7 @@
<v-list class="pt-0" dense> <v-list class="pt-0" dense>
<v-divider class="Divider"></v-divider> <v-divider class="Divider"></v-divider>
<a :href="item.href" v-for="(item, key) in Items" :key="key"> <a :href="item.href" v-for="(item, key) in Items" :key="key">
<template v-if="$_hasPermission(item.permission, false, item.module)"> <template v-if="!item.permissionClass || $_can(item.permissionClass, false, item.module)">
<wm-list-tile :TitleFa="item.titleFa" :TitleEn="item.titleEn"></wm-list-tile> <wm-list-tile :TitleFa="item.titleFa" :TitleEn="item.titleEn"></wm-list-tile>
</template> </template>
</a> </a>
@ -67,13 +67,13 @@ export default {
hints: true, hints: true,
drawer: false, drawer: false,
Items: [ Items: [
{ titleEn: 'My Profile', titleFa: ' حساب کاربری من ', icon: 'dashboard', permission: "", href: '/user/profile' }, { titleEn: 'My Profile', titleFa: ' حساب کاربری من ', icon: 'dashboard', permissionClass: null, href: '/user/profile' },
// { titleEn: ' My Messages ', titleFa: ' پیام های من ', icon: 'question_answer', permission: "", href: '/User/List' }, // { titleEn: ' My Messages ', titleFa: ' پیام های من ', icon: 'question_answer', permissionClass: null, href: '/User/List' },
{ {
titleEn: " My Users ", titleEn: " My Users ",
titleFa: " کاربران مجموعه ی من ", titleFa: " کاربران مجموعه ی من ",
icon: "question_answer", icon: "question_answer",
permission: "indexUser", permissionClass: "User::index",
module: "core", module: "core",
href: Routes.user(), href: Routes.user(),
}, },
@ -81,7 +81,7 @@ export default {
titleEn: " SMS Management ", titleEn: " SMS Management ",
titleFa: " مدیریت پیام های کوتاه ", titleFa: " مدیریت پیام های کوتاه ",
icon: "question_answer", icon: "question_answer",
permission: "", permissionClass: "SMS::manage",
href: '/sms/manage', href: '/sms/manage',
} }

@ -3,6 +3,7 @@ import globalStore from "@Global/store";
import authStore from "@Core/store"; import authStore from "@Core/store";
import permissionList from "@Global/utils/Permissions/list"; import permissionList from "@Global/utils/Permissions/list";
import { UserService } from "@Global/services/storage.services"; import { UserService } from "@Global/services/storage.services";
import $_can from "@Global/policy/can";
const global = { const global = {
methods: { methods: {
$_getPath(subPath = "") { $_getPath(subPath = "") {
@ -22,6 +23,9 @@ const global = {
"$_closeModalStack" "$_closeModalStack"
]), ]),
$_can,
//Permission //Permission
$_hasPermission(permission, owner = false, module = null) { $_hasPermission(permission, owner = false, module = null) {
let currentModule = module ? module : globalStore.state.common.current_module; let currentModule = module ? module : globalStore.state.common.current_module;

@ -0,0 +1,26 @@
import policyClasses from '@Global/policy';
import { UserService } from "@Global/services/storage.services";
import globalStore from "@Global/store";
import authStore from "@Core/store";
export default (model, object, module = null) => {
//Access To All Place For Site Manager
let siteOwner = UserService.get().is_owner == "true";
if (siteOwner) {
return true;
}
let policyClass = model.split('::')[0] + 'Policy';
let policymethod = model.split('::')[1];
module = module ? module : globalStore.state.common.current_module;
let rootPermissions = authStore.state.auth.permissions;
let permissions = rootPermissions[module] ? Object.values(rootPermissions[module]) : [] ;
//instance policty class
let policy = new policyClasses[policyClass];
if (typeof policy == 'object' && typeof policy[policymethod] == 'function' ) {
return policy[policymethod]({module, rootPermissions, permissions}, object);
} else {
return false;
}
};

@ -0,0 +1,9 @@
import CRMPolicy from '@CRM/policy';
import CorePolicy from '@Core/policy';
import CommonPolicy from '@Common/policy';
export default {
...CRMPolicy,
...CorePolicy,
...CommonPolicy,
}

@ -1,19 +1,27 @@
import $_can from "@Global/policy/can";
export default { export default {
$_openModalStack({ state, rootState }, data) { // data: {name, rel, model, form_data, data, modal_pop_data, type} $_openModalStack({ state, rootState }, data) { // data: {name, rel, model, form_data, data, modal_pop_data, type}
data.name = 'modal_' + data.name; let can = true;
if (state.modals.findIndex(x => x.name == data.name) == -1) { if (data.can) {
state.modals.push(data); can = $_can(data.can);
let module = data.name.split("_"); }
if (data.rel) { if (can) {
rootState[module[1]].relation = data.rel data.name = 'modal_' + data.name;
state.rel.push(data.rel); if (state.modals.findIndex(x => x.name == data.name) == -1) {
} state.modals.push(data);
if (data.model) { let module = data.name.split("_");
rootState[module[1]].current_model = data.model; if (data.rel) {
state.model.push(data.model); rootState[module[1]].relation = data.rel
state.rel.push(data.rel);
}
if (data.model) {
rootState[module[1]].current_model = data.model;
state.model.push(data.model);
}
rootState[module[1]].page_type = data.page_type ? data.page_type : 'modal';
} }
rootState[module[1]].page_type = data.page_type ? data.page_type : 'modal';
} }
}, },
$_closeModalStack({ state, rootState }) { $_closeModalStack({ state, rootState }) {

Loading…
Cancel
Save