| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295 |
- import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
- import { useAppStore } from '@/stores/index';
- import appSetting from '@/app-setting';
- import HomeView from '../views/index.vue';
- /*import HomeView from '../views/auth/boxed-signin.vue';*/
- const routes: RouteRecordRaw[] = [
- // dashboard
- { path: '/', name: 'home', component: HomeView ,meta: {
- requiresAuth: true
- },},
- {
- path: '/dashboard',
- name: 'dashboard',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "apps-scrumboard" */ '../views/apps/scrumboard.vue'),
- },
- {
- path: '/apps/scrumboard',
- name: 'scrumboard',
- component: () => import(/* webpackChunkName: "apps-scrumboard" */ '../views/apps/scrumboard.vue'),
- },
- {
- path: '/login',
- name: 'login',
- meta: {
- requiresAuth: false
- },
- component: () => import(/* webpackChunkName: "apps-scrumboard" */ '../views/auth/boxed-signin.vue'),
- },
- // apps
- {
- path: '/apps/applist',
- name: 'applist',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/applist.vue'),
- },
- {
- path: '/apps/custom',
- name: 'custom',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/custom.vue'),
- },
- {
- path: '/apps/stock',
- name: 'stock',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/stock.vue'),
- },
- {
- path: '/apps/order',
- name: 'order',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/order.vue'),
- },
- {
- path: '/apps/goods',
- name: 'goods',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/goods.vue'),
- },
- //user
- {
- path: '/users/contacts',
- name: 'contacts',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "apps-contacts" */ '../views/users/contacts.vue'),
- },
- {
- path: '/users/profile',
- name: 'profile',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "users-profile" */ '../views/users/profile.vue'),
- },
- {
- path: '/users/user-account-settings',
- name: 'user-account-settings',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "users-profile" */ '../views/users/user-account-settings.vue'),
- },
- // components
- {
- path: '/components/tabs',
- name: 'tabs',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-tabs" */ '../views/components/tabs.vue'),
- },
- {
- path: '/components/accordions',
- name: 'accordions',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-accordions" */ '../views/components/accordions.vue'),
- },
- {
- path: '/components/modals',
- name: 'modals',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-modals" */ '../views/components/modals.vue'),
- },
- {
- path: '/components/cards',
- name: 'cards',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-cards" */ '../views/components/cards.vue'),
- },
- {
- path: '/components/carousel',
- name: 'carousel',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-carousel" */ '../views/components/carousel.vue'),
- },
- {
- path: '/components/countdown',
- name: 'countdown',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-countdown" */ '../views/components/countdown.vue'),
- },
- {
- path: '/components/counter',
- name: 'counter',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-counter" */ '../views/components/counter.vue'),
- },
- {
- path: '/components/sweetalert',
- name: 'sweetalert',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-sweetalert" */ '../views/components/sweetalert.vue'),
- },
- {
- path: '/components/timeline',
- name: 'timeline',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-timeline" */ '../views/components/timeline.vue'),
- },
- {
- path: '/components/notifications',
- name: 'notifications',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-notifications" */ '../views/components/notifications.vue'),
- },
- {
- path: '/components/media-object',
- name: 'media-object',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-media-object" */ '../views/components/media-object.vue'),
- },
- {
- path: '/components/list-group',
- name: 'list-group',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-list-group" */ '../views/components/list-group.vue'),
- },
- {
- path: '/components/pricing-table',
- name: 'pricing-table',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-pricing-table" */ '../views/components/pricing-table.vue'),
- },
- {
- path: '/components/lightbox',
- name: 'lightbox',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "components-lightbox" */ '../views/components/lightbox.vue'),
- },
- //charts
- {
- path: '/charts',
- name: 'charts',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "charts" */ '../views/charts.vue'),
- },
- //auth
- {
- path: '/auth/cover-login',
- name: 'cover-login',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "forms-clipboard" */ '../views/auth/cover-login.vue'),
- },
- {
- path: '/auth/boxed-password-reset',
- name: 'boxed-password-reset',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "forms-clipboard" */ '../views/auth/boxed-password-reset.vue'),
- },
- {
- path: '/auth/boxed-signin',
- name: 'boxed-signin',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "forms-clipboard" */ '../views/auth/boxed-signin.vue'),
- },
- {
- path: '/auth/cover-password-reset',
- name: 'cover-password-reset',
- meta: {
- requiresAuth: true
- },
- component: () => import(/* webpackChunkName: "forms-clipboard" */ '../views/auth/cover-password-reset.vue'),
- },
- ];
- const router = createRouter({
- history: createWebHistory(),
- //linkExactActiveClass: 'active',
- routes,
- /* scrollBehavior(to, from, savedPosition) {
- if (savedPosition) {
- return savedPosition;
- } else {
- return { left: 0, top: 0 };
- }
- }, */
- });
- router.beforeEach((to, from, next) => {
- const store = useAppStore();
- console.log(to.meta.requiresAuth && !store.user);
- if (to.meta.requiresAuth && !store.user) {
- next({ name: 'login'});
- } else {
- next();
- }
- });
- router.afterEach((to, from, next) => {
- appSetting.changeAnimation();
- });
- export default router;
|