From 732cd3798bbbcd6fc8308594bfa52f4cf8ff2031 Mon Sep 17 00:00:00 2001
From: Xwen <929716663@qq.com>
Date: Thu, 21 Dec 2023 23:37:42 +0800
Subject: [PATCH 1/4] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=9D=BF=E5=9D=97?=
=?UTF-8?q?=E6=9D=83=E9=99=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Yi.Bbs.Vue3/src/layout/AppHeader.vue | 3 ++-
Yi.Bbs.Vue3/src/stores/user.js | 8 --------
Yi.Bbs.Vue3/src/utils/auth.js | 19 +++++++++++++++----
Yi.Bbs.Vue3/src/views/Discuss.vue | 6 +++---
4 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/Yi.Bbs.Vue3/src/layout/AppHeader.vue b/Yi.Bbs.Vue3/src/layout/AppHeader.vue
index e679ef15..0a0d1daf 100644
--- a/Yi.Bbs.Vue3/src/layout/AppHeader.vue
+++ b/Yi.Bbs.Vue3/src/layout/AppHeader.vue
@@ -75,7 +75,7 @@ import useConfigStore from "@/stores/config";
import useAuths from "@/hooks/useAuths";
import { Session } from "@/utils/storage";
-const { getToken } = useAuths();
+const { getToken, clearStorage } = useAuths();
const configStore = useConfigStore();
const router = useRouter();
const route = useRoute();
@@ -108,6 +108,7 @@ const enterProfile = () => {
router.push("/profile");
};
const toLogin = () => {
+ clearStorage();
Session.set("currentPath", route.path);
router.push("/login");
};
diff --git a/Yi.Bbs.Vue3/src/stores/user.js b/Yi.Bbs.Vue3/src/stores/user.js
index 6a445008..2d181b65 100644
--- a/Yi.Bbs.Vue3/src/stores/user.js
+++ b/Yi.Bbs.Vue3/src/stores/user.js
@@ -14,7 +14,6 @@ const useUserStore = defineStore("user", {
icon: null,
roles: [],
permissions: [],
- hasPermissions: false,
}),
getters: {},
actions: {
@@ -48,17 +47,10 @@ const useUserStore = defineStore("user", {
user.icon == "" || user.icon == null
? "/favicon.ico"
: import.meta.env.VITE_APP_BASEAPI + "/file/" + user.icon;
- const all_permission = "*:*:*";
if (res.roleCodes && res.roleCodes.length > 0) {
// 验证返回的roles是否是一个非空数组
this.roles = res.roleCodes;
this.permissions = res.permissionCodes;
- this.hasPermissions = res.permissionCodes.some((permission) => {
- return (
- all_permission === permission ||
- permissionFlag.includes(permission)
- );
- });
// this.roles = ["admin"];
// this.permissions=["*:*:*"]
} else {
diff --git a/Yi.Bbs.Vue3/src/utils/auth.js b/Yi.Bbs.Vue3/src/utils/auth.js
index 361f5648..691f4923 100644
--- a/Yi.Bbs.Vue3/src/utils/auth.js
+++ b/Yi.Bbs.Vue3/src/utils/auth.js
@@ -1,13 +1,24 @@
-const TokenKey = 'Admin-Token'
+import useUserStore from "@/stores/user";
+const TokenKey = "Admin-Token";
export function getToken() {
- return localStorage.getItem(TokenKey)
+ return localStorage.getItem(TokenKey);
}
export function setToken(token) {
- return localStorage.setItem(TokenKey, token)
+ return localStorage.setItem(TokenKey, token);
}
export function removeToken() {
- return localStorage.removeItem (TokenKey)
+ return localStorage.removeItem(TokenKey);
+}
+
+export function getPermission(code) {
+ const all_permission = "*:*:*";
+ const isHasPermission = useUserStore().permissions.some((permission) => {
+ return all_permission === permission || code.includes(permission);
+ });
+ return {
+ isHasPermission,
+ };
}
diff --git a/Yi.Bbs.Vue3/src/views/Discuss.vue b/Yi.Bbs.Vue3/src/views/Discuss.vue
index 7a943801..413d2e99 100644
--- a/Yi.Bbs.Vue3/src/views/Discuss.vue
+++ b/Yi.Bbs.Vue3/src/views/Discuss.vue
@@ -106,6 +106,7 @@ import { ref, reactive, watch, computed } from "vue";
import { useRoute, useRouter } from "vue-router";
import BottomInfo from "@/components/BottomInfo.vue";
import useUserStore from "@/stores/user";
+import { getPermission } from "@/utils/auth";
//数据定义
const route = useRoute();
@@ -159,10 +160,9 @@ const loadDiscussList = async () => {
};
//进入添加主题页面
+const { isHasPermission } = getPermission("bbs:discuss:add");
const isEditArticle = computed(
- () =>
- useUserStore().hasPermissions &&
- !(route.params.isPublish === "false" ? false : true)
+ () => isHasPermission && !(route.params.isPublish === "false" ? false : true)
);
const enterEditArticle = () => {
if (isEditArticle.value) {
From 522b18ff7d7220b6150da4e87a30eba2b5e2d871 Mon Sep 17 00:00:00 2001
From: Xwen <929716663@qq.com>
Date: Thu, 21 Dec 2023 23:59:25 +0800
Subject: [PATCH 2/4] =?UTF-8?q?feat:=E5=AE=8C=E6=88=90=E6=96=87=E7=AB=A0?=
=?UTF-8?q?=E6=A8=A1=E5=9D=97=E6=9D=83=E9=99=90=E3=80=81=E6=8A=BD=E5=8F=96?=
=?UTF-8?q?=E6=9D=83=E9=99=90=E9=80=BB=E8=BE=91=E3=80=81=E4=BF=AE=E5=A4=8D?=
=?UTF-8?q?=E8=B6=85=E7=AE=A1=E6=9D=83=E9=99=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Yi.Bbs.Vue3/src/utils/auth.js | 8 ++++++--
Yi.Bbs.Vue3/src/views/Article.vue | 23 +++++++++++++++++++----
Yi.Bbs.Vue3/src/views/Discuss.vue | 7 ++++---
3 files changed, 29 insertions(+), 9 deletions(-)
diff --git a/Yi.Bbs.Vue3/src/utils/auth.js b/Yi.Bbs.Vue3/src/utils/auth.js
index 691f4923..7e259f8d 100644
--- a/Yi.Bbs.Vue3/src/utils/auth.js
+++ b/Yi.Bbs.Vue3/src/utils/auth.js
@@ -13,10 +13,14 @@ export function removeToken() {
return localStorage.removeItem(TokenKey);
}
-export function getPermission(code) {
+export function getPermission(code, isDisabled) {
const all_permission = "*:*:*";
const isHasPermission = useUserStore().permissions.some((permission) => {
- return all_permission === permission || code.includes(permission);
+ if (all_permission === permission) {
+ return true;
+ } else {
+ return code.includes(permission) && !isDisabled;
+ }
});
return {
isHasPermission,
diff --git a/Yi.Bbs.Vue3/src/views/Article.vue b/Yi.Bbs.Vue3/src/views/Article.vue
index b286d515..e03d14fd 100644
--- a/Yi.Bbs.Vue3/src/views/Article.vue
+++ b/Yi.Bbs.Vue3/src/views/Article.vue
@@ -12,7 +12,7 @@
>主题封面
编辑
删除
@@ -170,7 +170,7 @@