更新
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
import { createRouter, createWebHashHistory } from 'vue-router'
|
||||
import Dashboard from '../views/Dashboard.vue'
|
||||
import Accounts from '../views/Accounts.vue'
|
||||
import Rules from '../views/Rules.vue'
|
||||
import Logs from '../views/Logs.vue'
|
||||
import Messages from '../views/Messages.vue'
|
||||
import SystemLogs from '../views/SystemLogs.vue'
|
||||
import ReceivedMessages from '../views/ReceivedMessages.vue'
|
||||
import Login from '../views/Login.vue'
|
||||
import Users from '../views/Users.vue'
|
||||
import Settings from '../views/Settings.vue'
|
||||
import DesktopUpdate from '../views/DesktopUpdate.vue'
|
||||
import PaymentSettings from '../views/PaymentSettings.vue'
|
||||
import MyPaymentOrders from '../views/MyPaymentOrders.vue'
|
||||
import Help from '../views/Help.vue'
|
||||
import Download from '../views/Download.vue'
|
||||
import { useAuthStore } from '../stores/auth'
|
||||
|
||||
const routes = [
|
||||
{ path: '/login', component: Login, name: 'Login', meta: { public: true } },
|
||||
{ path: '/', component: Dashboard, name: 'Dashboard' },
|
||||
{ path: '/accounts', component: Accounts, name: 'Accounts', meta: { write: true } },
|
||||
{ path: '/messages', component: Messages, name: 'Messages', meta: { write: true } },
|
||||
{ path: '/rules', component: Rules, name: 'Rules', meta: { write: true } },
|
||||
{ path: '/logs', component: Logs, name: 'Logs' },
|
||||
{ path: '/received-messages', component: ReceivedMessages, name: 'ReceivedMessages' },
|
||||
{ path: '/system-logs', component: SystemLogs, name: 'SystemLogs' },
|
||||
{ path: '/users', component: Users, name: 'Users', meta: { admin: true } },
|
||||
{ path: '/settings', component: Settings, name: 'Settings', meta: { admin: true } },
|
||||
{ path: '/desktop-update', component: DesktopUpdate, name: 'DesktopUpdate', meta: { admin: true } },
|
||||
{ path: '/payment-settings', component: PaymentSettings, name: 'PaymentSettings', meta: { admin: true } },
|
||||
{ path: '/payment-orders', component: MyPaymentOrders, name: 'MyPaymentOrders' },
|
||||
{ path: '/help', component: Help, name: 'Help' },
|
||||
{ path: '/download', component: Download, name: 'Download' }
|
||||
]
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHashHistory(),
|
||||
routes
|
||||
})
|
||||
|
||||
router.beforeEach(async (to) => {
|
||||
const auth = useAuthStore()
|
||||
|
||||
if (to.meta.public) {
|
||||
if (auth.isLoggedIn && to.path === '/login') {
|
||||
return '/'
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
if (!auth.isLoggedIn) {
|
||||
return '/login'
|
||||
}
|
||||
|
||||
if (!auth.user) {
|
||||
try {
|
||||
await auth.fetchMe()
|
||||
} catch {
|
||||
auth.clearSession()
|
||||
return '/login'
|
||||
}
|
||||
}
|
||||
|
||||
if (to.meta.admin && !auth.isAdmin) {
|
||||
return '/'
|
||||
}
|
||||
|
||||
if (to.meta.write && auth.isViewer) {
|
||||
return '/'
|
||||
}
|
||||
|
||||
return true
|
||||
})
|
||||
|
||||
export default router
|
||||
Reference in New Issue
Block a user