244 lines
5.8 KiB
JavaScript
244 lines
5.8 KiB
JavaScript
import userState from "../lib/userstate.js";
|
|
|
|
import HomePage from '../views/mobile/Home.vue';
|
|
import LoginPage from '../views/mobile/Login.vue';
|
|
import SignUpPage from '../views/mobile/Signup.vue';
|
|
import UnlockPage from '../views/mobile/Unlock.vue';
|
|
|
|
import TransactionDetailPage from '../views/mobile/transactions/Detail.vue';
|
|
import TransactionEditPage from '../views/mobile/transactions/Edit.vue';
|
|
|
|
import AccountListPage from '../views/mobile/accounts/List.vue';
|
|
import AccountEditPage from '../views/mobile/accounts/Edit.vue';
|
|
|
|
import StatisticsOverviewPage from '../views/mobile/statistics/Overview.vue';
|
|
|
|
import SettingsPage from '../views/mobile/Settings.vue';
|
|
import ApplicationLockPage from '../views/mobile/ApplicationLock.vue';
|
|
import ExchangeRatesPage from "../views/mobile/ExchangeRates.vue";
|
|
import AboutPage from "../views/mobile/About.vue";
|
|
|
|
import UserProfilePage from "../views/mobile/users/UserProfile.vue";
|
|
import TwoFactorAuthPage from "../views/mobile/users/TwoFactorAuth.vue";
|
|
import SessionListPage from "../views/mobile/users/SessionList.vue";
|
|
|
|
import CategoryAllPage from "../views/mobile/categories/All.vue";
|
|
import CategoryListPage from "../views/mobile/categories/List.vue";
|
|
import CategoryEditPage from "../views/mobile/categories/Edit.vue";
|
|
import CategoryDefaultPage from "../views/mobile/categories/Default.vue";
|
|
|
|
import TagListPage from "../views/mobile/tags/List.vue";
|
|
|
|
function checkLogin(to, from, resolve, reject) {
|
|
const router = this;
|
|
|
|
if (!userState.isUserLogined()) {
|
|
reject();
|
|
router.navigate('/login', {
|
|
clearPreviousHistory: true,
|
|
pushState: false
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (!userState.isUserUnlocked()) {
|
|
reject();
|
|
router.navigate('/unlock', {
|
|
clearPreviousHistory: true,
|
|
pushState: false
|
|
});
|
|
return;
|
|
}
|
|
|
|
resolve();
|
|
}
|
|
|
|
function checkLocked(to, from, resolve, reject) {
|
|
const router = this;
|
|
|
|
if (!userState.isUserLogined()) {
|
|
reject();
|
|
router.navigate('/login', {
|
|
clearPreviousHistory: true,
|
|
pushState: false
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (userState.isUserUnlocked()) {
|
|
reject();
|
|
router.navigate('/', {
|
|
clearPreviousHistory: true,
|
|
pushState: false
|
|
});
|
|
return;
|
|
}
|
|
|
|
resolve();
|
|
}
|
|
|
|
function checkNotLogin(to, from, resolve, reject) {
|
|
const router = this;
|
|
|
|
if (userState.isUserLogined() && !userState.isUserUnlocked()) {
|
|
reject();
|
|
router.navigate('/unlock', {
|
|
clearPreviousHistory: true,
|
|
pushState: false
|
|
});
|
|
return;
|
|
}
|
|
|
|
if (userState.isUserLogined()) {
|
|
reject();
|
|
router.navigate('/', {
|
|
clearPreviousHistory: true,
|
|
pushState: false
|
|
});
|
|
return;
|
|
}
|
|
|
|
resolve();
|
|
}
|
|
|
|
const routes = [
|
|
{
|
|
path: '/',
|
|
component: HomePage,
|
|
beforeEnter: checkLogin,
|
|
options: {
|
|
animate: false,
|
|
}
|
|
},
|
|
{
|
|
path: '/login',
|
|
component: LoginPage,
|
|
beforeEnter: checkNotLogin,
|
|
options: {
|
|
animate: false,
|
|
}
|
|
},
|
|
{
|
|
path: '/signup',
|
|
component: SignUpPage,
|
|
beforeEnter: checkNotLogin,
|
|
options: {
|
|
animate: false,
|
|
}
|
|
},
|
|
{
|
|
path: '/unlock',
|
|
component: UnlockPage,
|
|
beforeEnter: checkLocked,
|
|
options: {
|
|
animate: false,
|
|
}
|
|
},
|
|
{
|
|
path: '/transaction/details',
|
|
component: TransactionDetailPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/transaction/add',
|
|
component: TransactionEditPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/transaction/edit',
|
|
component: TransactionEditPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/account/list',
|
|
component: AccountListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/account/add',
|
|
component: AccountEditPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/account/edit',
|
|
component: AccountEditPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/statistic/overview',
|
|
component: StatisticsOverviewPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/settings',
|
|
component: SettingsPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/app_lock',
|
|
component: ApplicationLockPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/exchange_rates',
|
|
component: ExchangeRatesPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/about',
|
|
component: AboutPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/user/profile',
|
|
component: UserProfilePage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/user/2fa',
|
|
component: TwoFactorAuthPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/user/sessions',
|
|
component: SessionListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/category/all',
|
|
component: CategoryAllPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/category/list',
|
|
component: CategoryListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/category/add',
|
|
component: CategoryEditPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/category/edit',
|
|
component: CategoryEditPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/category/default',
|
|
component: CategoryDefaultPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '/tag/list',
|
|
component: TagListPage,
|
|
beforeEnter: checkLogin
|
|
},
|
|
{
|
|
path: '(.*)',
|
|
redirect: '/'
|
|
}
|
|
];
|
|
|
|
export default routes;
|