Files
devops-platform-web/src/router/index.ts
T
湛兮 366f1d667e feat: 接入真实平台登录态
- login/session: 对接后端登录、鉴权恢复和首次改密
- api/store: 恢复 BPMN XML 真实接口并携带 Bearer token
- layout/settings: 展示真实角色、审计 JSON 和通知平台配置文档
2026-06-12 00:38:31 +08:00

86 lines
1.8 KiB
TypeScript

import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'
import { useSessionStore } from '../stores/session'
import MainLayout from '../layouts/MainLayout.vue'
import LoginView from '../views/LoginView.vue'
import OverviewView from '../views/OverviewView.vue'
import ProjectsView from '../views/ProjectsView.vue'
import ReleaseCenterView from '../views/ReleaseCenterView.vue'
import RunsView from '../views/RunsView.vue'
import SettingsView from '../views/SettingsView.vue'
const routes: RouteRecordRaw[] = [
{
path: '/login',
name: 'login',
component: LoginView,
meta: {
public: true,
},
},
{
path: '/',
component: MainLayout,
redirect: '/overview',
children: [
{
path: 'overview',
name: 'overview',
component: OverviewView,
},
{
path: 'projects',
name: 'projects',
component: ProjectsView,
},
{
path: 'releases',
name: 'releases',
component: ReleaseCenterView,
},
{
path: 'runs',
name: 'runs',
component: RunsView,
},
{
path: 'agent',
redirect: '/overview',
},
{
path: 'settings',
name: 'settings',
component: SettingsView,
},
],
},
]
const router = createRouter({
history: createWebHistory(),
routes,
})
router.beforeEach(async (to) => {
const session = useSessionStore()
const authenticated = await session.bootstrap()
if (!to.meta.public && (!authenticated || session.mustChangePassword)) {
return {
name: 'login',
query: {
redirect: to.fullPath,
},
}
}
if (to.name === 'login' && authenticated && !session.mustChangePassword) {
return {
name: 'overview',
}
}
return true
})
export default router