|
@@ -9,28 +9,37 @@ const router = createRouter({
|
|
|
routes: [
|
|
routes: [
|
|
|
{
|
|
{
|
|
|
path: '/',
|
|
path: '/',
|
|
|
- redirect: '/home'
|
|
|
|
|
|
|
+ redirect: '/home',
|
|
|
|
|
+ meta: {
|
|
|
|
|
+ allowGuest: true
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
path: '/',
|
|
path: '/',
|
|
|
component: TabsPage,
|
|
component: TabsPage,
|
|
|
|
|
+ meta: {
|
|
|
|
|
+ allowGuest: true
|
|
|
|
|
+ },
|
|
|
children: [
|
|
children: [
|
|
|
{
|
|
{
|
|
|
path: '',
|
|
path: '',
|
|
|
- redirect: '/home'
|
|
|
|
|
|
|
+ redirect: '/home',
|
|
|
|
|
+ meta: {
|
|
|
|
|
+ allowGuest: true
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
path: 'home',
|
|
path: 'home',
|
|
|
component: () => import('@/views/HomePage.vue'),
|
|
component: () => import('@/views/HomePage.vue'),
|
|
|
meta: {
|
|
meta: {
|
|
|
- pageType: Page.Every
|
|
|
|
|
|
|
+ allowGuest: true
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
path: 'mine',
|
|
path: 'mine',
|
|
|
component: () => import('@/views/MinePage.vue'),
|
|
component: () => import('@/views/MinePage.vue'),
|
|
|
meta: {
|
|
meta: {
|
|
|
- pageType: Page.Every
|
|
|
|
|
|
|
+ allowGuest: true
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
]
|
|
]
|
|
@@ -40,7 +49,8 @@ const router = createRouter({
|
|
|
name: 'login',
|
|
name: 'login',
|
|
|
component: () => import('@/views/LoginPage.vue'),
|
|
component: () => import('@/views/LoginPage.vue'),
|
|
|
meta: {
|
|
meta: {
|
|
|
- pageType: Page.Login
|
|
|
|
|
|
|
+ allowGuest: true,
|
|
|
|
|
+ guestOnly: true
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -48,7 +58,8 @@ const router = createRouter({
|
|
|
name: 'loginPhone',
|
|
name: 'loginPhone',
|
|
|
component: () => import('@/views/LoginPhonePage.vue'),
|
|
component: () => import('@/views/LoginPhonePage.vue'),
|
|
|
meta: {
|
|
meta: {
|
|
|
- pageType: Page.Login
|
|
|
|
|
|
|
+ allowGuest: true,
|
|
|
|
|
+ guestOnly: true
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -56,7 +67,8 @@ const router = createRouter({
|
|
|
name: 'register',
|
|
name: 'register',
|
|
|
component: () => import('@/views/RegisterPage.vue'),
|
|
component: () => import('@/views/RegisterPage.vue'),
|
|
|
meta: {
|
|
meta: {
|
|
|
- pageType: Page.Login
|
|
|
|
|
|
|
+ allowGuest: true,
|
|
|
|
|
+ guestOnly: true
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -84,7 +96,7 @@ const router = createRouter({
|
|
|
name: 'productList',
|
|
name: 'productList',
|
|
|
component: () => import('@/views/ProductListPage.vue'),
|
|
component: () => import('@/views/ProductListPage.vue'),
|
|
|
meta: {
|
|
meta: {
|
|
|
- pageType: Page.Every
|
|
|
|
|
|
|
+ allowGuest: true
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -92,7 +104,7 @@ const router = createRouter({
|
|
|
name: 'productDetail',
|
|
name: 'productDetail',
|
|
|
component: () => import('@/views/ProductDetailPage.vue'),
|
|
component: () => import('@/views/ProductDetailPage.vue'),
|
|
|
meta: {
|
|
meta: {
|
|
|
- pageType: Page.Every
|
|
|
|
|
|
|
+ allowGuest: true
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -100,7 +112,7 @@ const router = createRouter({
|
|
|
name: 'productSearch',
|
|
name: 'productSearch',
|
|
|
component: () => import('@/views/ProductSearchPage.vue'),
|
|
component: () => import('@/views/ProductSearchPage.vue'),
|
|
|
meta: {
|
|
meta: {
|
|
|
- pageType: Page.Every
|
|
|
|
|
|
|
+ allowGuest: true
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
@@ -130,34 +142,26 @@ const router = createRouter({
|
|
|
}
|
|
}
|
|
|
]
|
|
]
|
|
|
})
|
|
})
|
|
|
-
|
|
|
|
|
-router.beforeEach((to, from, next) => {
|
|
|
|
|
- const userStore = useUserStore()
|
|
|
|
|
- if (to.meta.pageType != Page.Every) {
|
|
|
|
|
- if (!userStore.user && to.meta.pageType !== Page.Login) {
|
|
|
|
|
- userStore
|
|
|
|
|
- .get()
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- next()
|
|
|
|
|
- })
|
|
|
|
|
- .catch(() => {
|
|
|
|
|
- showConfirmDialog({
|
|
|
|
|
- title: '提示',
|
|
|
|
|
- message: '用户未登录,是否立即登录'
|
|
|
|
|
- })
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- next('/login')
|
|
|
|
|
- })
|
|
|
|
|
- .catch(() => {
|
|
|
|
|
- next(false)
|
|
|
|
|
- })
|
|
|
|
|
- })
|
|
|
|
|
- } else {
|
|
|
|
|
|
|
+router.beforeEach(async (to, from, next) => {
|
|
|
|
|
+ const { user, get: getUser } = useUserStore()
|
|
|
|
|
+ if (!to.meta.allowGuest && !user) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ await getUser()
|
|
|
next()
|
|
next()
|
|
|
|
|
+ } catch (error) {
|
|
|
|
|
+ const confirm = await showConfirmDialog({
|
|
|
|
|
+ title: '提示',
|
|
|
|
|
+ message: '用户未登录,是否立即登录'
|
|
|
|
|
+ }).catch(() => {
|
|
|
|
|
+ next(false)
|
|
|
|
|
+ })
|
|
|
|
|
+ if (confirm) {
|
|
|
|
|
+ next('/login')
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
- if (!userStore.user) {
|
|
|
|
|
- userStore.get()
|
|
|
|
|
|
|
+ if (!user) {
|
|
|
|
|
+ getUser().catch(() => {})
|
|
|
}
|
|
}
|
|
|
next()
|
|
next()
|
|
|
}
|
|
}
|