diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 4bc7d39..1186af9 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,7 +1,7 @@ { - "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=dfec734f6a8269341342", - "/js/vue/Home/app.js": "/js/vue/Home/app.js?id=9f7b5df53789693aae62", - "/js/vue/Modules/CRM/app.js": "/js/vue/Modules/CRM/app.js?id=252b52bb78d06845370f", - "/js/vue/Modules/Reservation/app.js": "/js/vue/Modules/Reservation/app.js?id=1fd7d081faa5afc1e968", - "/js/vue/User/app.js": "/js/vue/User/app.js?id=caa37176d181f1cabcd1" + "/js/vue/Authentication/app.js": "/js/vue/Authentication/app.js?id=9d41bd8d991d67dc5aca", + "/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=1c06e1143737f86f5941", + "/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=58adfc6b944d170b62eb" } diff --git a/resources/js/Global/components/Drawer/SideBar.vue b/resources/js/Global/components/Drawer/SideBar.vue index bd9c0ac..c2087f7 100644 --- a/resources/js/Global/components/Drawer/SideBar.vue +++ b/resources/js/Global/components/Drawer/SideBar.vue @@ -20,7 +20,7 @@ - {{ user.name }} + {{ getAuthUser.name }}
مدیریت
@@ -47,8 +47,7 @@ diff --git a/resources/js/Global/components/Misc/Alert.vue b/resources/js/Global/components/Misc/Alert.vue new file mode 100644 index 0000000..41e8e5d --- /dev/null +++ b/resources/js/Global/components/Misc/Alert.vue @@ -0,0 +1,19 @@ + + \ No newline at end of file diff --git a/resources/js/Global/mixins/global.js b/resources/js/Global/mixins/global.js index f9792f1..af91663 100644 --- a/resources/js/Global/mixins/global.js +++ b/resources/js/Global/mixins/global.js @@ -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 = { methods: { $_getPath(subPath) { - return '/' + subPath; + return "/" + subPath; }, //Modal - + ...mapActions("modal", ["openModal", "closeModal", "dialog"]), $_openModal(options) { this.openModal(options); @@ -22,10 +25,28 @@ const global = { }, //Permission - $_hasPermission(premission) { + $_hasPermission(permission, owner = false) { 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 }; diff --git a/resources/js/Global/plugins/auth.js b/resources/js/Global/plugins/auth.js new file mode 100644 index 0000000..534555e --- /dev/null +++ b/resources/js/Global/plugins/auth.js @@ -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()) +} \ No newline at end of file diff --git a/resources/js/Global/services/storage.services.js b/resources/js/Global/services/storage.services.js index cee1739..bea4c34 100644 --- a/resources/js/Global/services/storage.services.js +++ b/resources/js/Global/services/storage.services.js @@ -25,7 +25,10 @@ const TokenService = { const UserService = { get() { - return qs.parse(localStorage.getItem(USER)) + if (localStorage.getItem(USER)) { + return qs.parse(localStorage.getItem(USER)) + } + return null; }, save(user = null) { @@ -40,7 +43,10 @@ const UserService = { const PermissionService = { get() { - return qs.parse(localStorage.getItem(PERMISSION)) + if (localStorage.getItem(PERMISSION)) { + return qs.parse(localStorage.getItem(PERMISSION)) + } + return null; }, save(permission = null) { diff --git a/resources/js/Global/utils/Permissions/list.js b/resources/js/Global/utils/Permissions/list.js index ad8e5ed..e609438 100644 --- a/resources/js/Global/utils/Permissions/list.js +++ b/resources/js/Global/utils/Permissions/list.js @@ -1,6 +1,7 @@ export default { indexTask: 'index-task', storeTask: 'store-task', + receiveTask: 'receive-task', updateTask: 'update-task', destroyTask: 'destroy-task', @@ -60,11 +61,6 @@ export default { updateRole: 'update-role', destroyRole: 'destroy-role', - indexPermission: 'index-permission', - storePermission: 'store-permission', - updatePermission: 'update-permission', - destroyPermission: 'destroy-permission', - sendEmail: 'send-email', sendSMS: 'send-sms', } \ No newline at end of file diff --git a/resources/js/Home/app.js b/resources/js/Home/app.js index 4a3ec79..588f625 100644 --- a/resources/js/Home/app.js +++ b/resources/js/Home/app.js @@ -81,13 +81,7 @@ Vue.mixin({ methods: { ...global["methods"], ...commingSoon["methods"] } }); -import { TokenService } from "@Global/services/storage.services"; -import ApiService from "@Global/services/api.services"; -// If token exists set Authorizion header -ApiService.init(); -if (TokenService.getToken()) { - ApiService.setAuthHeader(); -} +import '@Global/plugins/auth' diff --git a/resources/js/Home/views/Home.vue b/resources/js/Home/views/Home.vue index 3fae22c..fbb5d20 100644 --- a/resources/js/Home/views/Home.vue +++ b/resources/js/Home/views/Home.vue @@ -1,36 +1,28 @@ @@ -38,11 +30,48 @@