169 lines
4.8 KiB
JavaScript
169 lines
4.8 KiB
JavaScript
import { createRouter, createWebHashHistory } from 'vue-router';
|
|
|
|
import userState from '@/lib/userstate.js';
|
|
|
|
import MainLayout from '@/views/desktop/MainLayout.vue';
|
|
import LoginPage from '@/views/desktop/LoginPage.vue';
|
|
import SignUpPage from '@/views/desktop/SignupPage.vue';
|
|
import UnlockPage from '@/views/desktop/UnlockPage.vue';
|
|
|
|
import HomePage from '@/views/desktop/HomePage.vue';
|
|
|
|
import TransactionListPage from '@/views/desktop/transactions/ListPage.vue';
|
|
|
|
import StatisticsTransactionPage from '@/views/desktop/statistics/TransactionPage.vue';
|
|
|
|
import AccountListPage from '@/views/desktop/accounts/ListPage.vue';
|
|
|
|
import TransactionCategoryListPage from '@/views/desktop/categories/ListPage.vue';
|
|
|
|
import TransactionTagListPage from '@/views/desktop/tags/ListPage.vue';
|
|
|
|
import UserSettingsPage from '@/views/desktop/user/UserSettingsPage.vue';
|
|
import AppSettingsPage from '@/views/desktop/app/AppSettingsPage.vue';
|
|
|
|
import ExchangeRatesPage from '@/views/desktop/ExchangeRatesPage.vue';
|
|
import AboutPage from '@/views/desktop/AboutPage.vue';
|
|
|
|
function checkLogin() {
|
|
if (!userState.isUserLogined()) {
|
|
return {
|
|
path: '/login',
|
|
replace: true
|
|
};
|
|
}
|
|
|
|
if (!userState.isUserUnlocked()) {
|
|
return {
|
|
path: '/unlock',
|
|
replace: true
|
|
};
|
|
}
|
|
}
|
|
|
|
function checkLocked() {
|
|
if (!userState.isUserLogined()) {
|
|
return {
|
|
path: '/login',
|
|
replace: true
|
|
};
|
|
}
|
|
|
|
if (userState.isUserUnlocked()) {
|
|
return {
|
|
path: '/',
|
|
replace: true
|
|
};
|
|
}
|
|
}
|
|
|
|
function checkNotLogin() {
|
|
if (userState.isUserLogined() && !userState.isUserUnlocked()) {
|
|
return {
|
|
path: '/unlock',
|
|
replace: true
|
|
};
|
|
}
|
|
|
|
if (userState.isUserLogined()) {
|
|
return {
|
|
path: '/',
|
|
replace: true
|
|
};
|
|
}
|
|
}
|
|
|
|
const router = createRouter({
|
|
history: createWebHashHistory(),
|
|
routes: [
|
|
{
|
|
path: '/',
|
|
component: MainLayout,
|
|
beforeEnter: checkLogin,
|
|
children: [
|
|
{
|
|
path: '',
|
|
component: HomePage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/transaction/list',
|
|
component: TransactionListPage,
|
|
beforeEnter: checkLogin,
|
|
props: route => ({
|
|
initDateType: route.query.dateType,
|
|
initMaxTime: route.query.maxTime,
|
|
initMinTime: route.query.minTime,
|
|
initType: route.query.type,
|
|
initCategoryId: route.query.categoryId,
|
|
initAccountId: route.query.accountId
|
|
})
|
|
},
|
|
{
|
|
path: '/statistics/transaction',
|
|
component: StatisticsTransactionPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/account/list',
|
|
component: AccountListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/category/list',
|
|
component: TransactionCategoryListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/tag/list',
|
|
component: TransactionTagListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/exchange_rates',
|
|
component: ExchangeRatesPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/user/settings',
|
|
component: UserSettingsPage,
|
|
beforeEnter: checkLogin,
|
|
props: route => ({
|
|
initTab: route.query.tab
|
|
})
|
|
},
|
|
{
|
|
path: '/app/settings',
|
|
component: AppSettingsPage,
|
|
beforeEnter: checkLogin,
|
|
props: route => ({
|
|
initTab: route.query.tab
|
|
})
|
|
},
|
|
{
|
|
path: '/about',
|
|
component: AboutPage,
|
|
beforeEnter: checkLogin
|
|
}
|
|
]
|
|
},
|
|
{
|
|
path: '/login',
|
|
component: LoginPage,
|
|
beforeEnter: checkNotLogin
|
|
},
|
|
{
|
|
path: '/signup',
|
|
component: SignUpPage,
|
|
beforeEnter: checkNotLogin
|
|
},
|
|
{
|
|
path: '/unlock',
|
|
component: UnlockPage,
|
|
beforeEnter: checkLocked
|
|
}
|
|
],
|
|
})
|
|
|
|
export default router;
|