diff --git a/backend/mini.db b/backend/mini.db new file mode 100644 index 0000000..e2a2455 Binary files /dev/null and b/backend/mini.db differ diff --git a/backend/mini.db-shm b/backend/mini.db-shm new file mode 100644 index 0000000..cb9b421 Binary files /dev/null and b/backend/mini.db-shm differ diff --git a/backend/mini.db-wal b/backend/mini.db-wal new file mode 100644 index 0000000..b85de46 Binary files /dev/null and b/backend/mini.db-wal differ diff --git a/frontend/src/components/layout/header.vue b/frontend/src/components/layout/header.vue new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/components/layout/index.vue b/frontend/src/components/layout/index.vue new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js index 94b4727..af2b436 100644 --- a/frontend/src/router/index.js +++ b/frontend/src/router/index.js @@ -1,14 +1,21 @@ import { createRouter, createWebHistory } from 'vue-router' - +import { userStore } from '@/stores/user' +import { ElMessage } from 'element-plus' const routes = [ { path: '/', - redirect: '/login' + redirect: '/main' }, { path: '/login', + meta: {title: '登录页'}, component: () => import('@/views/login.vue') + }, + { + path: '/main', + meta: {title: '主页'}, + component: () => import('@/views/main.vue') } ] @@ -18,4 +25,20 @@ const router = createRouter({ routes: routes }) +// 导航守卫 +router.beforeEach((to) => { + // 修改页面标题 + if(to.meta.title) { + document.title = to.meta.title + } + + if (to.path !== "/login") { + if (userStore().token){ + return + } + ElMessage.warning("请登录") + return '/login' + } +}) + export default router diff --git a/frontend/src/service/user.js b/frontend/src/service/user.js index d8a7032..248cb1d 100644 --- a/frontend/src/service/user.js +++ b/frontend/src/service/user.js @@ -7,3 +7,17 @@ export function login(data) { data }); } + +// 获取用户信息 +export function getUserInfo(uid){ + return request({ + url: `/user/${uid}` + }) +} + +// 获取权限信息 +export function getMenus(rid){ + return request({ + url: `/role/${rid}/menu` + }) +} diff --git a/frontend/src/stores/user.js b/frontend/src/stores/user.js index efe1226..635b81d 100644 --- a/frontend/src/stores/user.js +++ b/frontend/src/stores/user.js @@ -1,23 +1,40 @@ import { ref, computed } from 'vue' import { defineStore } from 'pinia' import { ElMessage } from 'element-plus' -import {login} from '@/service/user' +import {getMenus, getUserInfo, login} from '@/service/user' +import router from '@/router' export const userStore = defineStore('user', () => { - const uid = ref(0) const token = ref("") + const userInfo = ref({}) + const userMenus = ref([]) + + // getter const accessToken = computed(() => 'Bearer ' + token.value) // 非setup语法时的actions const loginAction = async (data) => { + + // 1. 登录 const res = await login(data) token.value = res.data.token - uid.value = res.data.id + + // 2. 获取用户信息 + const info = await getUserInfo(res.data.id) + userInfo.value = info.data + + // 3. 获取权限信息 + const menus = await getMenus(info.data.roles[0].id) + userMenus.value = menus.data + + // 4. 跳转 + router.push("/main") + // 弹框提示登录成功 ElMessage.success("登录成功.") } - return { uid, token, accessToken, loginAction } + return { token, accessToken, userInfo, userMenus, loginAction } }, { persist: true, // 解决pinia刷新时数据丢失问题 }) diff --git a/frontend/src/views/main.vue b/frontend/src/views/main.vue new file mode 100644 index 0000000..55ca234 --- /dev/null +++ b/frontend/src/views/main.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/frontend/src/views/setting/about.vue b/frontend/src/views/setting/about.vue new file mode 100644 index 0000000..b62864d --- /dev/null +++ b/frontend/src/views/setting/about.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/system/menu.vue b/frontend/src/views/system/menu.vue new file mode 100644 index 0000000..b639786 --- /dev/null +++ b/frontend/src/views/system/menu.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/system/role.vue b/frontend/src/views/system/role.vue new file mode 100644 index 0000000..af8913a --- /dev/null +++ b/frontend/src/views/system/role.vue @@ -0,0 +1,11 @@ + + + + + diff --git a/frontend/src/views/system/user.vue b/frontend/src/views/system/user.vue new file mode 100644 index 0000000..3834d2d --- /dev/null +++ b/frontend/src/views/system/user.vue @@ -0,0 +1,11 @@ + + + + +