-
-
-
-
-
-
diff --git a/resources/js/Authentication/app.js b/resources/js/Authentication/app.js
deleted file mode 100644
index f125cc6..0000000
--- a/resources/js/Authentication/app.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import Vue from 'vue'
-import App from './App.vue'
-import router from './router.js'
-import store from './store'
-import VueScrollReveal from 'vue-scroll-reveal'
-import Vuetify from 'vuetify'
-import {
- global
-} from '@Global/mixins/global';
-
-import 'popper.js'
-import 'bootstrap-v4-rtl'
-import 'bootstrap-v4-rtl/scss/bootstrap-rtl.scss'
-import 'bootstrap-select'
-import 'bootstrap-select/dist/css/bootstrap-select.css'
-import 'vuetify/dist/vuetify.min.css' // Ensure you are using css-loader
-import '@Global/assets/Font-Icons/css/fontello.css'
-import "@Global/scss/style.scss";
-
-
-// components
-import PartTitle from "@Global/components/Dividers/PartTitle.vue";
-import PageTitle from "@Global/components/Dividers/PageTitle.vue";
-import Checkbox from "@Global/components/Inputs/Checkbox.vue";
-import InfoBlock from "@Global/components/Misc/InfoBlock.vue";
-import Breadcrumbs from '@Global/components/Misc/Breadcrumbs';
-
-
-
-Vue.component('WM-PartTitle', PartTitle)
-Vue.component('WM-PageTitle', PageTitle)
-Vue.component('WM-Checkbox', Checkbox)
-Vue.component('WM-InfoBlock', InfoBlock)
-Vue.component('wm-breadcrumbs', Breadcrumbs)
-
-/**
- * First we will load all of this project's JavaScript dependencies which
- * includes Vue and other libraries. It is a great starting point when
- * building robust, powerful web applications using Vue and Laravel.
- */
-
-
-window.Vue = require('vue');
-
-/**
- * The following block of code may be used to automatically register your
- * Vue components. It will recursively scan this directory for the Vue
- * components and automatically register them with their "basename".
- *
- * Eg. ./components/ExampleComponent.vue ->
- */
-
-// const files = require.context('./', true, /\.vue$/i)
-// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))
-
-/**
- * Next, we will create a fresh Vue application instance and attach it to
- * the page. Then, you may begin adding components to this application
- * or customize the JavaScript scaffolding to fit your unique needs.
- */
-
-
-Vue.use(Vuetify, {
- iconfont: 'fa',
- rtl: true,
-});
-
-// Vue.config.productionTip = false;
-Vue.use(VueScrollReveal, {
- class: 'v-scroll-reveal', // A CSS class applied to elements with the v-scroll-reveal directive; useful for animation overrides.
- duration: 800,
- scale: 1,
- distance: '10px',
- mobile: false
-});
-
-Vue.mixin(global);
-
-
-
-const app = new Vue({
- router,
- store,
- render: h => h(App),
-}).$mount('#app');
diff --git a/resources/js/Authentication/components/Background.vue b/resources/js/Authentication/components/Background.vue
deleted file mode 100644
index 6a22394..0000000
--- a/resources/js/Authentication/components/Background.vue
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
+
- fas fa-power-off
+ fas fa-power-off خروج از حساب کاربری
@@ -48,7 +48,7 @@
diff --git a/resources/js/Global/services/api.services.js b/resources/js/Global/services/api.services.js
new file mode 100644
index 0000000..cf3ff42
--- /dev/null
+++ b/resources/js/Global/services/api.services.js
@@ -0,0 +1,26 @@
+import axios from 'axios'
+import { TokenService } from './storage.services'
+
+const ApiService = {
+
+ init(baseURL) {
+ axios.defaults.baseURL = baseURL;
+ },
+
+ setHeader() {
+ axios.defaults.headers.common["Accept"] = `application/json`;
+ axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
+ },
+
+ setAuthHeader() {
+ axios.defaults.headers.common["Authorization"] = `Bearer ${TokenService.getToken()}`;
+ },
+
+ removeAuthHeader() {
+ axios.defaults.headers.common["Authorization"] = null;
+ },
+
+}
+
+export default ApiService
+export { ApiService }
diff --git a/resources/js/Global/services/storage.services.js b/resources/js/Global/services/storage.services.js
new file mode 100644
index 0000000..ab236ae
--- /dev/null
+++ b/resources/js/Global/services/storage.services.js
@@ -0,0 +1,42 @@
+import qs from 'qs';
+
+const TOKEN_KEY = 'access_token'
+const USER = 'user'
+/**
+ * Manage the how Access Tokens are being stored and retreived from storage.
+ *
+ * Current implementation stores to localStorage. Local Storage should always be
+ * accessed through this instace.
+**/
+const TokenService = {
+ getToken() {
+ return localStorage.getItem(TOKEN_KEY)
+ },
+
+ saveToken(accessToken = null) {
+ console.log(accessToken);
+
+ localStorage.setItem(TOKEN_KEY, accessToken)
+ },
+
+ removeToken() {
+ localStorage.removeItem(TOKEN_KEY)
+ },
+}
+
+const UserService = {
+ getUser() {
+ return qs.parse(localStorage.getItem(USER))
+ },
+
+ saveUser(user = null) {
+ user = qs.stringify(user);
+ localStorage.setItem(USER, user)
+ },
+
+ removeUser() {
+ localStorage.removeItem(USER)
+ },
+}
+
+export { TokenService, UserService }
diff --git a/resources/js/Global/services/url.service.js b/resources/js/Global/services/url.service.js
index 0ad7496..472e13a 100644
--- a/resources/js/Global/services/url.service.js
+++ b/resources/js/Global/services/url.service.js
@@ -1,27 +1,25 @@
-const urlGenerator = (url, parameters = {}) => {
- let urlPath = url.split("/");
- let newPath = [];
- for (const iterator of urlPath) {
- if (iterator.startsWith(":")) {
- if (iterator.endsWith("?")) {
- if (parameters.hasOwnProperty(iterator.slice(1, -1))) {
- newPath.push(parameters[iterator.slice(1, -1)]);
+const urlGenerator = (urls) => {
+ return function(routeAddress, parameters) {
+ let urlPath = urls[routeAddress].split("/");
+ let newPath = [];
+ for (const iterator of urlPath) {
+ if (iterator.startsWith(":")) {
+ if (iterator.endsWith("?")) {
+ if (parameters.hasOwnProperty(iterator.slice(1, -1))) {
+ newPath.push(parameters[iterator.slice(1, -1)]);
+ }
+ } else {
+ console.assert(parameters.hasOwnProperty(iterator.slice(1)), 'parameter "' + iterator.slice(1) + '" not specified in parameters.')
+ newPath.push(parameters[iterator.slice(1)]);
}
} else {
- console.assert(
- parameters.hasOwnProperty(iterator.slice(1)),
- 'parameter "' +
- iterator.slice(1) +
- '" not specified in parameters.'
- );
- newPath.push(parameters[iterator.slice(1)]);
+ newPath.push(iterator);
}
- } else {
- newPath.push(iterator);
}
+ return '/' + newPath.join("/");
}
-
- return ("/" + newPath.join("/")).replace("//", "/");
};
-export { urlGenerator };
+export {
+ urlGenerator
+}
diff --git a/resources/js/Home/app.js b/resources/js/Home/app.js
index 36c6842..9d55918 100644
--- a/resources/js/Home/app.js
+++ b/resources/js/Home/app.js
@@ -70,6 +70,12 @@ Vue.use(VueScrollReveal, {
});
Vue.mixin(global);
+import { TokenService } from "@Global/services/storage.services";
+import ApiService from "@Global/services/api.services";
+// If token exists set Authorizion header
+if (TokenService.getToken()) {
+ ApiService.setAuthHeader();
+}
diff --git a/resources/js/Home/router/index.js b/resources/js/Home/router/index.js
index fc3448d..e7d62f6 100644
--- a/resources/js/Home/router/index.js
+++ b/resources/js/Home/router/index.js
@@ -54,24 +54,26 @@ const router = new Router({
Vue.use(Meta)
+
+import { TokenService } from "@Global/services/storage.services";
router.beforeEach((to, from, next) => {
-// const isPublic = to.matched.some(record => record.meta.public);
-// const onlyWhenLoggedOut = to.matched.some(record => record.meta.onlyWhenLoggedOut);
-// const roles = (to.meta && to.meta.roles) ? to.meta.roles : null;
+ const isPublic = to.matched.some(record => record.meta.public);
+ const onlyWhenLoggedOut = to.matched.some(
+ record => record.meta.onlyWhenLoggedOut
+ );
+ const roles = to.meta && to.meta.roles ? to.meta.roles : null;
+ const loggedIn = !!TokenService.getToken();
-// if (!isPublic && !loggedIn) {
-// return next({
-// path:'/login',
-// query: {redirect: to.fullPath} // Store the full path to redirect the user to after login
-// });
-// }
+ if (!isPublic && !loggedIn) {
+ return window.location.href = '/Login?redirect='+to.fullPath;
+ }
-// // Do not allow user to visit login page or register page if they are logged in
-// if (loggedIn && onlyWhenLoggedOut && policy) {
-// return next('/')
-// }
+ // Do not allow user to visit login page or register page if they are logged in
+ if (loggedIn && onlyWhenLoggedOut && policy) {
+ return window.location.href = '/Main';
+ }
- next();
+ next();
});
export default router
diff --git a/resources/js/Home/store.js b/resources/js/Home/store.js
deleted file mode 100644
index b754de2..0000000
--- a/resources/js/Home/store.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import Vue from 'vue'
-import Vuex from 'vuex'
-
-Vue.use(Vuex)
-
-export default new Vuex.Store({
- state: {
- UserDetails: false,
- UserRoles: false,
- OrderDetails: false,
- OrderStatus: false,
- SendEmail: false,
- SendSMS: false
- }
-})
diff --git a/resources/js/Home/store/actions.js b/resources/js/Home/store/actions.js
new file mode 100644
index 0000000..bd77588
--- /dev/null
+++ b/resources/js/Home/store/actions.js
@@ -0,0 +1,4 @@
+
+export default {
+
+};
diff --git a/resources/js/Home/store/getters.js b/resources/js/Home/store/getters.js
new file mode 100644
index 0000000..fab8971
--- /dev/null
+++ b/resources/js/Home/store/getters.js
@@ -0,0 +1,4 @@
+export default {
+ getClientTypes: state => state.clientTypes,
+ getPhoneTypes: state => state.phoneTypes
+};
diff --git a/resources/js/Home/store/index.js b/resources/js/Home/store/index.js
new file mode 100644
index 0000000..2fd93cf
--- /dev/null
+++ b/resources/js/Home/store/index.js
@@ -0,0 +1,31 @@
+/**
+ * Vuex
+ *
+ * @library
+ *
+ * https://vuex.vuejs.org/en/
+ */
+
+// Lib imports
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+// Store functionality
+import actions from './actions'
+import getters from './getters'
+import modules from './modules'
+import mutations from './mutations'
+import state from './state'
+
+Vue.use(Vuex)
+
+// Create a new store
+const store = new Vuex.Store({
+ actions,
+ getters,
+ modules,
+ mutations,
+ state
+})
+
+export default store
\ No newline at end of file
diff --git a/resources/js/Home/store/modules/index.js b/resources/js/Home/store/modules/index.js
new file mode 100644
index 0000000..c8e2337
--- /dev/null
+++ b/resources/js/Home/store/modules/index.js
@@ -0,0 +1,56 @@
+const requireCurrentModule = require.context('.', true, /\.js$/);
+const requireGlobalModule = require.context('@Global/store/modules', true, /\.js$/)
+const requireCoreModule = require.context('@Core/store/modules', true, /\.js$/)
+
+const modules = {};
+
+requireCurrentModule.keys().forEach(fileName => {
+ if (fileName === './index.js') return
+
+ // Replace ./ and .js
+ const path = fileName.replace(/(\.\/|\.js)/g, '')
+ const [moduleName, imported] = path.split('/')
+ if (!modules[moduleName]) {
+ modules[moduleName] = {
+ namespaced: true
+ }
+ }
+
+ modules[moduleName][imported] = requireCurrentModule(fileName).default
+
+});
+
+requireGlobalModule.keys().forEach(fileName => {
+ if (fileName === './index.js') return
+
+ // Replace ./ and .js
+ const path = fileName.replace(/(\.\/|\.js)/g, '')
+ const [moduleName, imported] = path.split('/')
+ if (!modules[moduleName]) {
+ modules[moduleName] = {
+ namespaced: true
+ }
+ }
+
+ modules[moduleName][imported] = requireGlobalModule(fileName).default
+
+});
+
+requireCoreModule.keys().forEach(fileName => {
+ if (fileName === './index.js') return
+
+ // Replace ./ and .js
+ const path = fileName.replace(/(\.\/|\.js)/g, '')
+ const [moduleName, imported] = path.split('/')
+ if (!modules[moduleName]) {
+ modules[moduleName] = {
+ namespaced: true
+ }
+ }
+
+ modules[moduleName][imported] = requireCoreModule(fileName).default
+
+});
+
+
+export default modules
\ No newline at end of file
diff --git a/resources/js/Home/store/mutations.js b/resources/js/Home/store/mutations.js
new file mode 100644
index 0000000..46b09a6
--- /dev/null
+++ b/resources/js/Home/store/mutations.js
@@ -0,0 +1,3 @@
+export default {
+
+};
diff --git a/resources/js/Home/store/state.js b/resources/js/Home/store/state.js
new file mode 100644
index 0000000..b8f4ef2
--- /dev/null
+++ b/resources/js/Home/store/state.js
@@ -0,0 +1,4 @@
+export default {
+
+
+};
diff --git a/resources/js/User/App.vue b/resources/js/User/App.vue
deleted file mode 100644
index 33d1d9d..0000000
--- a/resources/js/User/App.vue
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/resources/js/User/app.js b/resources/js/User/app.js
deleted file mode 100644
index 24a532a..0000000
--- a/resources/js/User/app.js
+++ /dev/null
@@ -1,82 +0,0 @@
-import Vue from 'vue'
-import App from './App.vue'
-import router from './router'
-import store from './store'
-import VueScrollReveal from 'vue-scroll-reveal'
-import Vuetify from 'vuetify'
-import {global} from '../Global/mixins/global';
-
-import 'popper.js'
-import 'bootstrap-v4-rtl'
-import 'bootstrap-v4-rtl/scss/bootstrap-rtl.scss'
-import 'bootstrap-select'
-import 'bootstrap-select/dist/css/bootstrap-select.css'
-import 'vuetify/dist/vuetify.min.css' // Ensure you are using css-loader
-import '@Global/assets/Font-Icons/css/fontello.css'
-import "@Global/scss/style.scss"
-
-
-// components
-import PartTitle from "@Global/components/Dividers/PartTitle.vue";
-import PageTitle from "@Global/components/Dividers/PageTitle.vue";
-import Checkbox from "@Global/components/Inputs/Checkbox.vue";
-import InfoBlock from "@Global/components/Misc/InfoBlock.vue";
-import Breadcrumbs from '@Global/components/Misc/Breadcrumbs';
-
-
-Vue.component('WM-PartTitle', PartTitle)
-Vue.component('WM-PageTitle', PageTitle)
-Vue.component('WM-Checkbox', Checkbox)
-Vue.component('WM-InfoBlock', InfoBlock)
-Vue.component('wm-breadcrumbs', Breadcrumbs)
-
-/**
- * First we will load all of this project's JavaScript dependencies which
- * includes Vue and other libraries. It is a great starting point when
- * building robust, powerful web applications using Vue and Laravel.
- */
-
-
-window.Vue = require('vue');
-
-/**
- * The following block of code may be used to automatically register your
- * Vue components. It will recursively scan this directory for the Vue
- * components and automatically register them with their "basename".
- *
- * Eg. ./components/ExampleComponent.vue ->
- */
-
-// const files = require.context('./', true, /\.vue$/i)
-// files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default))
-
-/**
- * Next, we will create a fresh Vue application instance and attach it to
- * the page. Then, you may begin adding components to this application
- * or customize the JavaScript scaffolding to fit your unique needs.
- */
-
-
-Vue.use(Vuetify, {
- iconfont: 'fa',
- rtl: true,
-});
-
-// Vue.config.productionTip = false;
-Vue.use(VueScrollReveal, {
- class: 'v-scroll-reveal', // A CSS class applied to elements with the v-scroll-reveal directive; useful for animation overrides.
- duration: 800,
- scale: 1,
- distance: '10px',
- mobile: false
-});
-Vue.mixin(global);
-
-
-
-
-const app = new Vue({
- router,
- store,
- render: h => h(App),
-}).$mount('#app');
diff --git a/resources/js/User/components/Config/Department/Add.vue b/resources/js/User/components/Config/Department/Add.vue
deleted file mode 100644
index 1f5429f..0000000
--- a/resources/js/User/components/Config/Department/Add.vue
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-