From 8bd22c4634a575fd788e422bcd505244c132962a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Tue, 28 Mar 2023 08:32:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9A=90=E7=A7=81=E7=A9=BA=E9=97=B4=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=88=86=E7=BB=84=E6=8E=88=E6=9D=83=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/service/manage/WikiSpaceService.java | 6 ++++- .../manage/impl/WikiSpaceServiceImpl.java | 8 +++++- .../wiki/controller/WikiSpaceController.java | 6 ++++- .../wiki/framework/consts/WikiAuthType.java | 1 + .../service/common/WikiPageAuthService.java | 25 +++++++++++++++++++ 5 files changed, 43 insertions(+), 3 deletions(-) diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiSpaceService.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiSpaceService.java index aecdd80d..571ae555 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiSpaceService.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/WikiSpaceService.java @@ -3,6 +3,8 @@ package com.zyplayer.doc.data.service.manage; import com.zyplayer.doc.data.repository.manage.entity.WikiSpace; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 服务类 @@ -12,5 +14,7 @@ import com.baomidou.mybatisplus.extension.service.IService; * @since 2019-03-13 */ public interface WikiSpaceService extends IService { - + + List getViewAuthSpaceIds(); + } diff --git a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiSpaceServiceImpl.java b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiSpaceServiceImpl.java index 257d8933..bd463298 100644 --- a/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiSpaceServiceImpl.java +++ b/zyplayer-doc-data/src/main/java/com/zyplayer/doc/data/service/manage/impl/WikiSpaceServiceImpl.java @@ -6,6 +6,8 @@ import com.zyplayer.doc.data.service.manage.WikiSpaceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 服务实现类 @@ -16,5 +18,9 @@ import org.springframework.stereotype.Service; */ @Service public class WikiSpaceServiceImpl extends ServiceImpl implements WikiSpaceService { - + + @Override + public List getViewAuthSpaceIds() { + return null; + } } diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java index 84c71d85..78da2af9 100644 --- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java +++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/controller/WikiSpaceController.java @@ -60,7 +60,11 @@ public class WikiSpaceController { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(WikiSpace::getDelFlag, 0); wrapper.eq(wikiSpace.getId() != null, WikiSpace::getId, wikiSpace.getId()); - wrapper.and(con -> con.and(conSub -> conSub.eq(WikiSpace::getType, 3).eq(WikiSpace::getCreateUserId, currentUser.getUserId())).or().in(WikiSpace::getType, 1, 2)); + wrapper.and(con -> + con.and(conSub -> conSub.eq(WikiSpace::getType, 3).eq(WikiSpace::getCreateUserId, currentUser.getUserId())) + .or(conSub -> conSub.eq(WikiSpace::getType, 3).eq(WikiSpace::getCreateUserId, currentUser.getUserId())) + .or().in(WikiSpace::getType, 1, 2) + ); // 收藏的空间 List favoriteList = wikiSpaceFavoriteService.myFavoriteSpaceList(); Set favoriteSpaceIds = favoriteList.stream().map(WikiSpaceFavorite::getSpaceId).collect(Collectors.toSet()); diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/WikiAuthType.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/WikiAuthType.java index a127cb3c..961f09be 100644 --- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/WikiAuthType.java +++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/framework/consts/WikiAuthType.java @@ -9,6 +9,7 @@ package com.zyplayer.doc.wiki.framework.consts; public enum WikiAuthType { @Deprecated CREATE_PAGE(1, "WIKI_CREATE_PAGE_"), + VIEW_PAGE(2, "WIKI_VIEW_PAGE_"), EDIT_PAGE(2, "WIKI_EDIT_PAGE_"), @Deprecated COMMENT_PAGE(3, "WIKI_COMMENT_PAGE_"), diff --git a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/service/common/WikiPageAuthService.java b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/service/common/WikiPageAuthService.java index bc11dd34..32d0dc61 100644 --- a/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/service/common/WikiPageAuthService.java +++ b/zyplayer-doc-wiki/src/main/java/com/zyplayer/doc/wiki/service/common/WikiPageAuthService.java @@ -23,6 +23,31 @@ import java.util.Objects; public class WikiPageAuthService { private final UserGroupAuthMapper userGroupAuthMapper; + + /** + * 是否具有查看权限 + */ + public String canView(WikiSpace wikiSpaceSel, Integer editType, Long pageId, Long currentUserId) { + if (wikiSpaceSel == null || Objects.equals(editType, 1)) { + return "当前页面不允许查看!"; + } + // 私人空间不允许调用接口获取文章 + if (SpaceType.isOthersPrivate(wikiSpaceSel.getType(), currentUserId, wikiSpaceSel.getCreateUserId())) { + return "您没有权限修改该空间的文章!"; + } + // 空间不是自己的,也没有权限 + if (SpaceType.isOthersPersonal(wikiSpaceSel.getType(), currentUserId, wikiSpaceSel.getCreateUserId())) { + boolean pageAuth = DocUserUtil.haveCustomAuth(WikiAuthType.VIEW_PAGE.getCode(), DocSysType.WIKI.getType(), DocSysModuleType.Wiki.PAGE.getType(), pageId); + if (!pageAuth) { + // 在空间上直接授权了分组的权限,在这个分组里就具有权限 + Long authId = userGroupAuthMapper.haveAuth(wikiSpaceSel.getId(), DocSysType.WIKI.getType(), WikiAuthType.VIEW_PAGE.getType(), currentUserId); + if (authId == null) { + return "您没有查看该文章的权限!"; + } + } + } + return null; + } /** * 是否具有编辑权限