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/Home/app.js": "/js/vue/Home/app.js?id=74e9f77c3f4b27f1064e",
"/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=5796dc8e39461ba7c663",
"/js/vue/Product/app.js": "/js/vue/Product/app.js?id=08d8ea1fbfc6525f583e",
"/js/vue/SMS/app.js": "/js/vue/SMS/app.js?id=b24a120ac1950107365e",
"/js/vue/Service/app.js": "/js/vue/Service/app.js?id=d00caa51db85115da349",
"/js/vue/User/app.js": "/js/vue/User/app.js?id=87d8a0228fc5b7ff5bcd"
"/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=37070ad2465c7e560c3f",
"/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=2c5cbf260d63c1cafbbe",
"/js/vue/Product/app.js": "/js/vue/Product/app.js?id=944d070c189a2798d4cf",
"/js/vue/SMS/app.js": "/js/vue/SMS/app.js?id=ce7afc9f2fc462ece42d",
"/js/vue/Service/app.js": "/js/vue/Service/app.js?id=33e68750bbf5de9c2426",
"/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-divider class="Divider"></v-divider>
<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>
</template>
</a>
@ -67,13 +67,13 @@ export default {
hints: true,
drawer: false,
Items: [
{ titleEn: 'My Profile', titleFa: ' حساب کاربری من ', icon: 'dashboard', permission: "", href: '/user/profile' },
// { titleEn: ' My Messages ', titleFa: ' پیام های من ', icon: 'question_answer', permission: "", href: '/User/List' },
{ titleEn: 'My Profile', titleFa: ' حساب کاربری من ', icon: 'dashboard', permissionClass: null, href: '/user/profile' },
// { titleEn: ' My Messages ', titleFa: ' پیام های من ', icon: 'question_answer', permissionClass: null, href: '/User/List' },
{
titleEn: " My Users ",
titleFa: " کاربران مجموعه ی من ",
icon: "question_answer",
permission: "indexUser",
permissionClass: "User::index",
module: "core",
href: Routes.user(),
},
@ -81,7 +81,7 @@ export default {
titleEn: " SMS Management ",
titleFa: " مدیریت پیام های کوتاه ",
icon: "question_answer",
permission: "",
permissionClass: "SMS::manage",
href: '/sms/manage',
}

@ -3,6 +3,7 @@ import globalStore from "@Global/store";
import authStore from "@Core/store";
import permissionList from "@Global/utils/Permissions/list";
import { UserService } from "@Global/services/storage.services";
import $_can from "@Global/policy/can";
const global = {
methods: {
$_getPath(subPath = "") {
@ -22,6 +23,9 @@ const global = {
"$_closeModalStack"
]),
$_can,
//Permission
$_hasPermission(permission, owner = false, module = null) {
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,6 +1,13 @@
import $_can from "@Global/policy/can";
export default {
$_openModalStack({ state, rootState }, data) { // data: {name, rel, model, form_data, data, modal_pop_data, type}
let can = true;
if (data.can) {
can = $_can(data.can);
}
if (can) {
data.name = 'modal_' + data.name;
if (state.modals.findIndex(x => x.name == data.name) == -1) {
state.modals.push(data);
@ -15,6 +22,7 @@ export default {
}
rootState[module[1]].page_type = data.page_type ? data.page_type : 'modal';
}
}
},
$_closeModalStack({ state, rootState }) {
if (state.modals.length) {

Loading…
Cancel
Save