permission and aut

pull/1/head
saeid_01 5 years ago
parent e5eee7a7ce
commit 79982a185c

@ -1,7 +1,7 @@
{ {
"/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=dfec734f6a8269341342", "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=9d41bd8d991d67dc5aca",
"/js/vue/Home/app.js": "/js/vue/Home/app.js?id=9f7b5df53789693aae62", "/js/vue/Home/app.js": "/js/vue/Home/app.js?id=66508c2fd5ce92d2e1fa",
"/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=252b52bb78d06845370f", "/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=1c06e1143737f86f5941",
"/js/vue/Modules/Reservation/app.js": "/js/vue/Modules/Reservation/app.js?id=1fd7d081faa5afc1e968", "/js/vue/Modules/Reservation/app.js": "/js/vue/Modules/Reservation/app.js?id=6ad848b6a54b25f9f62e",
"/js/vue/User/app.js": "/js/vue/User/app.js?id=caa37176d181f1cabcd1" "/js/vue/User/app.js": "/js/vue/User/app.js?id=58adfc6b944d170b62eb"
} }

@ -20,7 +20,7 @@
</v-list-tile-avatar> </v-list-tile-avatar>
<v-list-tile-content> <v-list-tile-content>
<v-list-tile-title class="Name"> {{ user.name }} </v-list-tile-title> <v-list-tile-title class="Name"> {{ getAuthUser.name }} </v-list-tile-title>
<div class="Role"> مدیریت </div> <div class="Role"> مدیریت </div>
<a class="LogOut"> <a class="LogOut">
<v-tooltip bottom color="black"> <v-tooltip bottom color="black">
@ -47,8 +47,7 @@
<script> <script>
import Tile from '@Global/components/Drawer/Tile'; import Tile from '@Global/components/Drawer/Tile';
import Notifications from '@Global/components/Drawer/Notifications'; import Notifications from '@Global/components/Drawer/Notifications';
import {mapActions} from 'vuex'; import {mapActions, mapGetters} from 'vuex';
import {UserService} from '@Global/services/storage.services'
export default { export default {
data() { data() {
return { return {
@ -69,12 +68,12 @@
'wm-list-tile': Tile, 'wm-list-tile': Tile,
'wm-notifications':Notifications, 'wm-notifications':Notifications,
}, },
computed:{
...mapGetters('auth', ["getAuthUser"])
},
methods:{ methods:{
...mapActions('auth', ['logout']) ...mapActions('auth', ['logout'])
}, },
created() {
this.user = UserService.get();
}
} }
</script> </script>

@ -0,0 +1,19 @@
<template>
<v-snackbar :color="color" :timeout="timeout" v-model="snackbar">
{{message}}
<v-btn color="white" text @click="snackbar = false" fab>
<v-icon color="white">{{icon}}</v-icon>
</v-btn>
</v-snackbar>
</template>
<script>
export default {
data: {},
props: {
timeout: { default: 30000 },
color: { default: "red" },
message: { default: "فعالیت شما با موفقیت انجام شد" },
icon: "fas fa-times"
}
};
</script>

@ -1,12 +1,15 @@
import { mapActions, mapMutations } from "vuex"; import { mapActions } from "vuex";
import globalStore from "@Global/store";
import authStore from "@Core/store";
import permissionList from "@Global/utils/Permissions/list";
const global = { const global = {
methods: { methods: {
$_getPath(subPath) { $_getPath(subPath) {
return '/' + subPath; return "/" + subPath;
}, },
//Modal //Modal
...mapActions("modal", ["openModal", "closeModal", "dialog"]), ...mapActions("modal", ["openModal", "closeModal", "dialog"]),
$_openModal(options) { $_openModal(options) {
this.openModal(options); this.openModal(options);
@ -22,10 +25,28 @@ const global = {
}, },
//Permission //Permission
$_hasPermission(premission) { $_hasPermission(permission, owner = false) {
return true; return true;
}, let currentModule = globalStore.state.common.current_module;
let permissions = authStore.state.auth.permissions;
let multiPermission = permission.split("|");
for (const iterator of multiPermission) {
if (iterator == '') {
return true;
}
permission = permissionList[iterator];
if (
owner ||
(permission &&
permissions[currentModule] &&
permissions[currentModule].includes(permission))
) {
return true;
}
}
return false;
}
} }
}; };
export {global} export { global };

@ -0,0 +1,18 @@
import { TokenService, PermissionService, UserService } from "@Global/services/storage.services";
import ApiService from "@Global/services/api.services";
import store from "@Core/store/index";
ApiService.init();
// If token exists set Authorizion header
if (TokenService.getToken()) {
ApiService.setAuthHeader();
}
if (PermissionService.get()) {
store.commit('auth/SET_AUTH_PERMISSIONS', PermissionService.get())
} else {
store.dispatch('auth/loadAuthPermissions');
}
if (UserService.get()) {
store.commit('auth/SET_AUTH_USER', UserService.get())
}

@ -25,7 +25,10 @@ const TokenService = {
const UserService = { const UserService = {
get() { get() {
return qs.parse(localStorage.getItem(USER)) if (localStorage.getItem(USER)) {
return qs.parse(localStorage.getItem(USER))
}
return null;
}, },
save(user = null) { save(user = null) {
@ -40,7 +43,10 @@ const UserService = {
const PermissionService = { const PermissionService = {
get() { get() {
return qs.parse(localStorage.getItem(PERMISSION)) if (localStorage.getItem(PERMISSION)) {
return qs.parse(localStorage.getItem(PERMISSION))
}
return null;
}, },
save(permission = null) { save(permission = null) {

@ -1,6 +1,7 @@
export default { export default {
indexTask: 'index-task', indexTask: 'index-task',
storeTask: 'store-task', storeTask: 'store-task',
receiveTask: 'receive-task',
updateTask: 'update-task', updateTask: 'update-task',
destroyTask: 'destroy-task', destroyTask: 'destroy-task',
@ -60,11 +61,6 @@ export default {
updateRole: 'update-role', updateRole: 'update-role',
destroyRole: 'destroy-role', destroyRole: 'destroy-role',
indexPermission: 'index-permission',
storePermission: 'store-permission',
updatePermission: 'update-permission',
destroyPermission: 'destroy-permission',
sendEmail: 'send-email', sendEmail: 'send-email',
sendSMS: 'send-sms', sendSMS: 'send-sms',
} }

@ -81,13 +81,7 @@ Vue.mixin({
methods: { ...global["methods"], ...commingSoon["methods"] } methods: { ...global["methods"], ...commingSoon["methods"] }
}); });
import { TokenService } from "@Global/services/storage.services"; import '@Global/plugins/auth'
import ApiService from "@Global/services/api.services";
// If token exists set Authorizion header
ApiService.init();
if (TokenService.getToken()) {
ApiService.setAuthHeader();
}

@ -1,36 +1,28 @@
<template> <template>
<v-container fluid> <v-container fluid>
<v-layout row wrap> <v-layout row wrap>
<!-- <a href="/Main/Home" class="flex lg8 xs12"> <a
<wm-tile TileClass="Inline LTR Padd10" TitleEn="My Store" TitleFa="فروشگاه من" Desc=" کالاها، خدمات، تخفیفات، فروش وِیژه و ... " :href="module.href"
GradientBegin="feeae3" GradientEnd="feeae3" ImageURL="Store.png" ImageHeight="220px" Quantity="32"> :class="'flex ' + module.main_class"
</wm-tile> v-for="( module ,key ) in modules"
</a> :key="key"
>
<router-link to="/Main/Home" class="flex lg4 xs12"> <wm-tile
<wm-tile TileClass="Padd10" TitleEn="My Portfolios" TitleFa=" نمونه کار های من " Desc=" کالاها، خدمات، تخفیفات، فروش وِیژه و ... " :TileClass="module.title_class"
GradientBegin="cab9a5" GradientEnd="f0ebe6" ImageURL="Portfolio2.png" ImageHeight="150px" Quantity="1250"> :TitleEn="module.title_en"
</wm-tile> :TitleFa="module.title_fa"
</router-link> :Desc="module.description"
:GradientBegin="module.gradient_begin"
<router-link to="/Main/Home" class="flex lg12 xs12"> :GradientEnd="module.gradient_end"
<wm-tile TileClass="Inline LTR Padd10" TileHeight="180" TitleEn="My Website" TitleFa="وبسایت من" Desc=" کالاها، خدمات، تخفیفات، فروش وِیژه و ... " :ImageURL="module.img_url"
GradientBegin="f2f2f2" GradientEnd="e0e0e0" ImageURL="Website.png" > :ImageHeight="module.img_height"
</wm-tile> ></wm-tile>
</router-link> -->
<a href="/CRM/Home" class="flex lg8 xs12">
<wm-tile TileClass="Inline LTR Padd10" TitleEn="CRM" TitleFa=" مدیریت ارتباط با مشتری " Desc=" کالاها، خدمات، تخفیفات، فروش وِیژه و ... "
GradientBegin="d6e7de" GradientEnd="fff2f3" ImageURL="Members.png" ImageHeight="220px" >
</wm-tile>
</a>
<a href="/Reservation/Home" v-if="$_inCommingSoon('main-reservation')" class="flex lg4 xs12">
<wm-tile TileClass="Padd10" TitleEn="Reservations" TitleFa=" سیستم رزرو وقت " Desc=" کالاها، خدمات، تخفیفات، فروش وِیژه و ... "
GradientBegin="fff" GradientEnd="f7f7f7" ImageURL="Clock.png" ImageHeight="150px" >
</wm-tile>
</a> </a>
</v-layout> </v-layout>
<router-link :to="{name: 'AddModule'}"> <router-link :to="{name: 'AddModule'}">
<v-btn large fab color="cyan" fixed bottom left dark style="left:5%"><v-icon dark>fas fa-plus</v-icon></v-btn> <v-btn large fab color="cyan" fixed bottom left dark style="left:5%">
<v-icon dark>fas fa-plus</v-icon>
</v-btn>
</router-link> </router-link>
</v-container> </v-container>
</template> </template>
@ -38,11 +30,48 @@
<script> <script>
import Tile from "@Global/components/Tiles/Tile";
import Tile from '@Global/components/Tiles/Tile'; import { mapGetters, mapActions } from 'vuex';
export default { export default {
data: () => ({
modules: [
{
href: "/CRM/Home",
title_class: "Inline LTR Padd10",
main_class: "lg8 xs12",
title_en: "CRM",
title_fa: " مدیریت ارتباط با مشتری ",
description: " کالاها، خدمات، تخفیفات، فروش وِیژه و ... ",
gradient_begin: "d6e7de",
gradient_end: "fff2f3",
img_url: "Members.png",
img_height: "220px"
},
{
href: "/Reservation/Home",
title_class: "Padd10",
main_class: "lg4 xs12",
title_en: "Reservations",
title_fa: " سیستم رزرو وقت ",
description: " کالاها، خدمات، تخفیفات، فروش وِیژه و ... ",
gradient_begin: "fff",
gradient_end: "f7f7f7",
img_url: "Clock.png",
img_height: "150px"
}
]
}),
components: { components: {
'wm-tile':Tile, "wm-tile": Tile
},
computed: {
...mapGetters("role_permission", ["getModules"]),
},
methods:{
...mapActions('role_permission', ['loadModules']),
},
created() {
this.loadModules();
}, },
}; };
</script> </script>

Loading…
Cancel
Save