feat:完成文章模块权限、抽取权限逻辑、修复超管权限

This commit is contained in:
Xwen
2023-12-21 23:59:25 +08:00
parent 732cd3798b
commit 522b18ff7d
3 changed files with 29 additions and 9 deletions

View File

@@ -13,10 +13,14 @@ export function removeToken() {
return localStorage.removeItem(TokenKey); return localStorage.removeItem(TokenKey);
} }
export function getPermission(code) { export function getPermission(code, isDisabled) {
const all_permission = "*:*:*"; const all_permission = "*:*:*";
const isHasPermission = useUserStore().permissions.some((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 { return {
isHasPermission, isHasPermission,

View File

@@ -12,7 +12,7 @@
>主题封面</el-button >主题封面</el-button
> >
<el-button <el-button
v-hasPer="['bbs:article:add']" v-if="isAddArticle"
@click="addArticle('00000000-0000-0000-0000-000000000000')" @click="addArticle('00000000-0000-0000-0000-000000000000')"
type="primary" type="primary"
style="width: 100%; margin-bottom: 0.8rem; margin-left: 0" style="width: 100%; margin-bottom: 0.8rem; margin-left: 0"
@@ -105,14 +105,14 @@
<el-button <el-button
type="primary" type="primary"
size="default" size="default"
v-hasPer="['bbs:discuss:edit']" v-if="isEditTheme"
@click="updateHander(route.params.discussId)" @click="updateHander(route.params.discussId)"
>编辑</el-button >编辑</el-button
> >
<el-button <el-button
style="margin-left: 1rem" style="margin-left: 1rem"
type="danger" type="danger"
v-hasPer="['bbs:discuss:remove']" v-if="isRemoveTheme"
@click="delHander(route.params.discussId)" @click="delHander(route.params.discussId)"
>删除</el-button >删除</el-button
> >
@@ -170,7 +170,7 @@
</div> </div>
</template> </template>
<script setup> <script setup>
import { h, ref, onMounted, watch } from "vue"; import { h, ref, onMounted, watch, computed } from "vue";
import AvatarInfo from "@/components/AvatarInfo.vue"; import AvatarInfo from "@/components/AvatarInfo.vue";
import InfoCard from "@/components/InfoCard.vue"; import InfoCard from "@/components/InfoCard.vue";
import ArticleContentInfo from "@/components/ArticleContentInfo.vue"; import ArticleContentInfo from "@/components/ArticleContentInfo.vue";
@@ -186,6 +186,7 @@ import {
get as articleGet, get as articleGet,
} from "@/apis/articleApi.js"; } from "@/apis/articleApi.js";
import Breadcrumb from "@/components/Breadcrumb/index.vue"; import Breadcrumb from "@/components/Breadcrumb/index.vue";
import { getPermission } from "@/utils/auth";
//数据定义 //数据定义
const route = useRoute(); const route = useRoute();
@@ -219,12 +220,26 @@ const loadArticleData = async () => {
}; };
//主题初始化 //主题初始化
const isDisabledCreateComment = ref(false);
const { isHasPermission: isAddArticle } = getPermission(
"bbs:article:add",
isDisabledCreateComment.value
);
const { isHasPermission: isEditTheme } = getPermission(
"bbs:discuss:edit",
isDisabledCreateComment.value
);
const { isHasPermission: isRemoveTheme } = getPermission(
"bbs:discuss:remove",
isDisabledCreateComment.value
);
const loadDiscuss = async (isRewrite) => { const loadDiscuss = async (isRewrite) => {
if (isRewrite) { if (isRewrite) {
//跳转路由 //跳转路由
router.push(`/article/${route.params.discussId}`); router.push(`/article/${route.params.discussId}`);
} }
discuss.value = (await discussGet(route.params.discussId)).data; discuss.value = (await discussGet(route.params.discussId)).data;
isDisabledCreateComment.value = discuss.value.isDisabledCreateComment;
if (route.params.articleId != "") { if (route.params.articleId != "") {
const response = await articleGet(route.params.articleId); const response = await articleGet(route.params.articleId);
discuss.value.content = response.data.content; discuss.value.content = response.data.content;

View File

@@ -160,10 +160,11 @@ const loadDiscussList = async () => {
}; };
//进入添加主题页面 //进入添加主题页面
const { isHasPermission } = getPermission("bbs:discuss:add"); const { isHasPermission: isEditArticle } = getPermission(
const isEditArticle = computed( "bbs:discuss:add",
() => isHasPermission && !(route.params.isPublish === "false" ? false : true) route.params.isPublish === "false" ? false : true
); );
const enterEditArticle = () => { const enterEditArticle = () => {
if (isEditArticle.value) { if (isEditArticle.value) {
//跳转路由 //跳转路由