index.ts 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
  2. import { useAppStore } from '@/stores/index';
  3. import appSetting from '@/app-setting';
  4. import HomeView from '../views/index.vue';
  5. /*import HomeView from '../views/auth/boxed-signin.vue';*/
  6. const routes: RouteRecordRaw[] = [
  7. // dashboard
  8. { path: '/', name: 'home', component: HomeView ,meta: {
  9. requiresAuth: true
  10. },},
  11. {
  12. path: '/dashboard',
  13. name: 'dashboard',
  14. meta: {
  15. requiresAuth: true
  16. },
  17. component: () => import(/* webpackChunkName: "apps-scrumboard" */ '../views/apps/scrumboard.vue'),
  18. },
  19. {
  20. path: '/apps/scrumboard',
  21. name: 'scrumboard',
  22. component: () => import(/* webpackChunkName: "apps-scrumboard" */ '../views/apps/scrumboard.vue'),
  23. },
  24. {
  25. path: '/login',
  26. name: 'login',
  27. meta: {
  28. requiresAuth: false
  29. },
  30. component: () => import(/* webpackChunkName: "apps-scrumboard" */ '../views/auth/boxed-signin.vue'),
  31. },
  32. // apps
  33. {
  34. path: '/apps/applist',
  35. name: 'applist',
  36. meta: {
  37. requiresAuth: true
  38. },
  39. component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/applist.vue'),
  40. },
  41. {
  42. path: '/apps/custom',
  43. name: 'custom',
  44. meta: {
  45. requiresAuth: true
  46. },
  47. component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/custom.vue'),
  48. },
  49. {
  50. path: '/apps/stock',
  51. name: 'stock',
  52. meta: {
  53. requiresAuth: true
  54. },
  55. component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/stock.vue'),
  56. },
  57. {
  58. path: '/apps/order',
  59. name: 'order',
  60. meta: {
  61. requiresAuth: true
  62. },
  63. component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/order.vue'),
  64. },
  65. {
  66. path: '/apps/goods',
  67. name: 'goods',
  68. meta: {
  69. requiresAuth: true
  70. },
  71. component: () => import(/* webpackChunkName: "apps-chat" */ '../views/apps/goods.vue'),
  72. },
  73. //user
  74. {
  75. path: '/users/contacts',
  76. name: 'contacts',
  77. meta: {
  78. requiresAuth: true
  79. },
  80. component: () => import(/* webpackChunkName: "apps-contacts" */ '../views/users/contacts.vue'),
  81. },
  82. {
  83. path: '/users/profile',
  84. name: 'profile',
  85. meta: {
  86. requiresAuth: true
  87. },
  88. component: () => import(/* webpackChunkName: "users-profile" */ '../views/users/profile.vue'),
  89. },
  90. {
  91. path: '/users/user-account-settings',
  92. name: 'user-account-settings',
  93. meta: {
  94. requiresAuth: true
  95. },
  96. component: () => import(/* webpackChunkName: "users-profile" */ '../views/users/user-account-settings.vue'),
  97. },
  98. // components
  99. {
  100. path: '/components/tabs',
  101. name: 'tabs',
  102. meta: {
  103. requiresAuth: true
  104. },
  105. component: () => import(/* webpackChunkName: "components-tabs" */ '../views/components/tabs.vue'),
  106. },
  107. {
  108. path: '/components/accordions',
  109. name: 'accordions',
  110. meta: {
  111. requiresAuth: true
  112. },
  113. component: () => import(/* webpackChunkName: "components-accordions" */ '../views/components/accordions.vue'),
  114. },
  115. {
  116. path: '/components/modals',
  117. name: 'modals',
  118. meta: {
  119. requiresAuth: true
  120. },
  121. component: () => import(/* webpackChunkName: "components-modals" */ '../views/components/modals.vue'),
  122. },
  123. {
  124. path: '/components/cards',
  125. name: 'cards',
  126. meta: {
  127. requiresAuth: true
  128. },
  129. component: () => import(/* webpackChunkName: "components-cards" */ '../views/components/cards.vue'),
  130. },
  131. {
  132. path: '/components/carousel',
  133. name: 'carousel',
  134. meta: {
  135. requiresAuth: true
  136. },
  137. component: () => import(/* webpackChunkName: "components-carousel" */ '../views/components/carousel.vue'),
  138. },
  139. {
  140. path: '/components/countdown',
  141. name: 'countdown',
  142. meta: {
  143. requiresAuth: true
  144. },
  145. component: () => import(/* webpackChunkName: "components-countdown" */ '../views/components/countdown.vue'),
  146. },
  147. {
  148. path: '/components/counter',
  149. name: 'counter',
  150. meta: {
  151. requiresAuth: true
  152. },
  153. component: () => import(/* webpackChunkName: "components-counter" */ '../views/components/counter.vue'),
  154. },
  155. {
  156. path: '/components/sweetalert',
  157. name: 'sweetalert',
  158. meta: {
  159. requiresAuth: true
  160. },
  161. component: () => import(/* webpackChunkName: "components-sweetalert" */ '../views/components/sweetalert.vue'),
  162. },
  163. {
  164. path: '/components/timeline',
  165. name: 'timeline',
  166. meta: {
  167. requiresAuth: true
  168. },
  169. component: () => import(/* webpackChunkName: "components-timeline" */ '../views/components/timeline.vue'),
  170. },
  171. {
  172. path: '/components/notifications',
  173. name: 'notifications',
  174. meta: {
  175. requiresAuth: true
  176. },
  177. component: () => import(/* webpackChunkName: "components-notifications" */ '../views/components/notifications.vue'),
  178. },
  179. {
  180. path: '/components/media-object',
  181. name: 'media-object',
  182. meta: {
  183. requiresAuth: true
  184. },
  185. component: () => import(/* webpackChunkName: "components-media-object" */ '../views/components/media-object.vue'),
  186. },
  187. {
  188. path: '/components/list-group',
  189. name: 'list-group',
  190. meta: {
  191. requiresAuth: true
  192. },
  193. component: () => import(/* webpackChunkName: "components-list-group" */ '../views/components/list-group.vue'),
  194. },
  195. {
  196. path: '/components/pricing-table',
  197. name: 'pricing-table',
  198. meta: {
  199. requiresAuth: true
  200. },
  201. component: () => import(/* webpackChunkName: "components-pricing-table" */ '../views/components/pricing-table.vue'),
  202. },
  203. {
  204. path: '/components/lightbox',
  205. name: 'lightbox',
  206. meta: {
  207. requiresAuth: true
  208. },
  209. component: () => import(/* webpackChunkName: "components-lightbox" */ '../views/components/lightbox.vue'),
  210. },
  211. //charts
  212. {
  213. path: '/charts',
  214. name: 'charts',
  215. meta: {
  216. requiresAuth: true
  217. },
  218. component: () => import(/* webpackChunkName: "charts" */ '../views/charts.vue'),
  219. },
  220. //auth
  221. {
  222. path: '/auth/cover-login',
  223. name: 'cover-login',
  224. meta: {
  225. requiresAuth: true
  226. },
  227. component: () => import(/* webpackChunkName: "forms-clipboard" */ '../views/auth/cover-login.vue'),
  228. },
  229. {
  230. path: '/auth/boxed-password-reset',
  231. name: 'boxed-password-reset',
  232. meta: {
  233. requiresAuth: true
  234. },
  235. component: () => import(/* webpackChunkName: "forms-clipboard" */ '../views/auth/boxed-password-reset.vue'),
  236. },
  237. {
  238. path: '/auth/boxed-signin',
  239. name: 'boxed-signin',
  240. meta: {
  241. requiresAuth: true
  242. },
  243. component: () => import(/* webpackChunkName: "forms-clipboard" */ '../views/auth/boxed-signin.vue'),
  244. },
  245. {
  246. path: '/auth/cover-password-reset',
  247. name: 'cover-password-reset',
  248. meta: {
  249. requiresAuth: true
  250. },
  251. component: () => import(/* webpackChunkName: "forms-clipboard" */ '../views/auth/cover-password-reset.vue'),
  252. },
  253. ];
  254. const router = createRouter({
  255. history: createWebHistory(),
  256. //linkExactActiveClass: 'active',
  257. routes,
  258. /* scrollBehavior(to, from, savedPosition) {
  259. if (savedPosition) {
  260. return savedPosition;
  261. } else {
  262. return { left: 0, top: 0 };
  263. }
  264. }, */
  265. });
  266. router.beforeEach((to, from, next) => {
  267. const store = useAppStore();
  268. console.log(to.meta.requiresAuth && !store.user);
  269. if (to.meta.requiresAuth && !store.user) {
  270. next({ name: 'login'});
  271. } else {
  272. next();
  273. }
  274. });
  275. router.afterEach((to, from, next) => {
  276. appSetting.changeAnimation();
  277. });
  278. export default router;