wiki权限判断

This commit is contained in:
暮光:城中城
2019-03-13 22:34:15 +08:00
parent 5096d242fd
commit 42ed560750
10 changed files with 193 additions and 91 deletions

View File

@@ -3,6 +3,8 @@ package com.zyplayer.doc.wiki.controller;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.core.json.ResponseJson;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageContent;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageFile;
@@ -48,6 +50,19 @@ public class WikiOpenApiController {
@Resource
Mapper mapper;
@PostMapping("/space/info")
public ResponseJson<WikiSpace> spaceInfo(String space) {
UpdateWrapper<WikiSpace> wrapper = new UpdateWrapper<>();
wrapper.eq("uuid", space);
wrapper.eq("del_flag", 0);
WikiSpace wikiSpace = wikiSpaceService.getOne(wrapper);
// 不存在或未开放
if (wikiSpace == null || wikiSpace.getOpenDoc() != 1) {
return DocResponseJson.warn("未找到该文档");
}
return DocResponseJson.ok(wikiSpace);
}
@PostMapping("/page/list")
public ResponseJson<List<WikiPageVo>> list(String space) {
UpdateWrapper<WikiSpace> wrapperSpace = new UpdateWrapper<>();

View File

@@ -5,8 +5,12 @@ import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.core.json.ResponseJson;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageComment;
import com.zyplayer.doc.data.repository.manage.entity.WikiSpace;
import com.zyplayer.doc.data.service.manage.WikiPageCommentService;
import com.zyplayer.doc.data.service.manage.WikiPageService;
import com.zyplayer.doc.data.service.manage.WikiSpaceService;
import com.zyplayer.doc.wiki.controller.vo.WikiPageCommentVo;
import org.dozer.Mapper;
import org.slf4j.Logger;
@@ -19,6 +23,7 @@ import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -35,13 +40,24 @@ public class WikiPageCommentController {
@Resource
WikiPageCommentService wikiPageCommentService;
@Resource
WikiSpaceService wikiSpaceService;
@Resource
WikiPageService wikiPageService;
@Resource
Mapper mapper;
@PostMapping("/list")
public ResponseJson<List<WikiPageCommentVo>> list(WikiPageComment wikiPageComment) {
public ResponseJson<List<WikiPageCommentVo>> list(WikiPageComment pageComment) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPage wikiPageSel = wikiPageService.getById(pageComment.getPageId());
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
// 私人空间
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有查看该空间的评论权!");
}
UpdateWrapper<WikiPageComment> wrapper = new UpdateWrapper<>();
wrapper.eq("page_id", wikiPageComment.getPageId());
wrapper.eq(wikiPageComment.getParentId() != null, "parent_id", wikiPageComment.getParentId());
wrapper.eq("page_id", pageComment.getPageId());
wrapper.eq(pageComment.getParentId() != null, "parent_id", pageComment.getParentId());
List<WikiPageComment> authList = wikiPageCommentService.list(wrapper);
Map<Long, List<WikiPageComment>> listMap = authList.stream().filter(val -> val.getParentId() != null)
.collect(Collectors.groupingBy(WikiPageComment::getParentId));
@@ -56,10 +72,17 @@ public class WikiPageCommentController {
@PostMapping("/update")
public ResponseJson<Object> update(WikiPageComment pageComment) {
Long id = pageComment.getId();
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPage wikiPageSel = wikiPageService.getById(pageComment.getPageId());
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
// 私人空间
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有该空间的评论权!");
}
if (id != null && id > 0) {
wikiPageCommentService.updateById(pageComment);
} else {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
pageComment.setCreateTime(new Date());
pageComment.setCreateUserId(currentUser.getUserId());
pageComment.setCreateUserName(currentUser.getUsername());

View File

@@ -5,14 +5,8 @@ import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.core.json.ResponseJson;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageContent;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageFile;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageZan;
import com.zyplayer.doc.data.service.manage.WikiPageContentService;
import com.zyplayer.doc.data.service.manage.WikiPageFileService;
import com.zyplayer.doc.data.service.manage.WikiPageService;
import com.zyplayer.doc.data.service.manage.WikiPageZanService;
import com.zyplayer.doc.data.repository.manage.entity.*;
import com.zyplayer.doc.data.service.manage.*;
import com.zyplayer.doc.wiki.controller.vo.WikiPageContentVo;
import com.zyplayer.doc.wiki.controller.vo.WikiPageVo;
import org.apache.commons.lang3.StringUtils;
@@ -47,11 +41,18 @@ public class WikiPageController {
@Resource
WikiPageZanService wikiPageZanService;
@Resource
WikiSpaceService wikiSpaceService;
@Resource
Mapper mapper;
@PostMapping("/list")
public ResponseJson<List<WikiPageVo>> list(WikiPage wikiPage) {
// TODO 检查space是否开放访问
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPage.getSpaceId());
// 私人空间
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有查看该空间的文章列表!");
}
UpdateWrapper<WikiPage> wrapper = new UpdateWrapper<>();
wrapper.eq("del_flag", 0);
wrapper.eq("space_id", wikiPage.getSpaceId());
@@ -72,7 +73,11 @@ public class WikiPageController {
public ResponseJson<WikiPageContentVo> detail(WikiPage wikiPage) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPage wikiPageSel = wikiPageService.getById(wikiPage.getId());
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
// 私人空间
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有查看该空间的文章详情!");
}
UpdateWrapper<WikiPageContent> wrapper = new UpdateWrapper<>();
wrapper.eq("page_id", wikiPage.getId());
WikiPageContent pageContent = wikiPageContentService.getOne(wrapper);
@@ -101,6 +106,11 @@ public class WikiPageController {
@PostMapping("/update")
public ResponseJson<Object> update(WikiPage wikiPage, String content) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPage.getSpaceId());
// 私人空间不允许调用接口获取文章
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有修改该空间的文章权限!");
}
WikiPageContent pageContent = new WikiPageContent();
pageContent.setContent(content);
Integer delFlag = Optional.ofNullable(wikiPage.getDelFlag()).orElse(0);

View File

@@ -4,8 +4,12 @@ import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.core.json.ResponseJson;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageFile;
import com.zyplayer.doc.data.repository.manage.entity.WikiSpace;
import com.zyplayer.doc.data.service.manage.WikiPageFileService;
import com.zyplayer.doc.data.service.manage.WikiPageService;
import com.zyplayer.doc.data.service.manage.WikiSpaceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
@@ -14,6 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Date;
import java.util.Objects;
/**
* 文档控制器
@@ -28,6 +33,10 @@ public class WikiPageFileController {
@Resource
WikiPageFileService wikiPageFileService;
@Resource
WikiSpaceService wikiSpaceService;
@Resource
WikiPageService wikiPageService;
// @PostMapping("/list")
// public ResponseJson<List<WikiPageFile>> list(WikiPageFile wikiPageFile) {
@@ -41,10 +50,16 @@ public class WikiPageFileController {
// }
// return DocResponseJson.ok(fileList);
// }
//
@PostMapping("/update")
public ResponseJson<Object> update(WikiPageFile wikiPageFile) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPage wikiPageSel = wikiPageService.getById(wikiPageFile.getPageId());
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
// 私人空间
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有该空间的文件上传权限!");
}
Long id = wikiPageFile.getId();
if (id != null && id > 0) {
wikiPageFile.setUpdateUserId(currentUser.getUserId());

View File

@@ -3,8 +3,14 @@ package com.zyplayer.doc.wiki.controller;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.zyplayer.doc.core.json.DocResponseJson;
import com.zyplayer.doc.core.json.ResponseJson;
import com.zyplayer.doc.data.config.security.DocUserDetails;
import com.zyplayer.doc.data.config.security.DocUserUtil;
import com.zyplayer.doc.data.repository.manage.entity.WikiPage;
import com.zyplayer.doc.data.repository.manage.entity.WikiPageZan;
import com.zyplayer.doc.data.repository.manage.entity.WikiSpace;
import com.zyplayer.doc.data.service.manage.WikiPageService;
import com.zyplayer.doc.data.service.manage.WikiPageZanService;
import com.zyplayer.doc.data.service.manage.WikiSpaceService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
@@ -13,6 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* 文档控制器
@@ -27,9 +34,20 @@ public class WikiPageZanController {
@Resource
WikiPageZanService wikiPageZanService;
@Resource
WikiSpaceService wikiSpaceService;
@Resource
WikiPageService wikiPageService;
@PostMapping("/list")
public ResponseJson<List<WikiPageZan>> list(WikiPageZan wikiPageZan) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPage wikiPageSel = wikiPageService.getById(wikiPageZan.getPageId());
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
// 私人空间
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有获取该空间的点赞列表权限!");
}
UpdateWrapper<WikiPageZan> wrapper = new UpdateWrapper<>();
wrapper.eq("page_id", wikiPageZan.getPageId());
wrapper.eq(wikiPageZan.getCommentId() != null, "comment_id", wikiPageZan.getCommentId());
@@ -40,6 +58,13 @@ public class WikiPageZanController {
@PostMapping("/update")
public ResponseJson<Object> update(WikiPageZan wikiPageZan) {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
WikiPage wikiPageSel = wikiPageService.getById(wikiPageZan.getPageId());
WikiSpace wikiSpaceSel = wikiSpaceService.getById(wikiPageSel.getSpaceId());
// 私人空间
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有该空间的点赞权限!");
}
wikiPageZanService.zanPage(wikiPageZan);
return DocResponseJson.ok();
}

View File

@@ -38,8 +38,7 @@ public class WikiSpaceController {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
UpdateWrapper<WikiSpace> wrapper = new UpdateWrapper<>();
wrapper.eq("del_flag", 0);
wrapper.in("type", 1, 2);
//wrapper.or().eq("type", 3).eq("create_user_id", currentUser.getUserId());
wrapper.and(con -> con.and(conSub -> conSub.eq("type", 3).eq("create_user_id", currentUser.getUserId())).or().in("type", 1, 2));
List<WikiSpace> authList = wikiSpaceService.list(wrapper);
return DocResponseJson.ok(authList);
}
@@ -47,15 +46,19 @@ public class WikiSpaceController {
@PostMapping("/update")
public ResponseJson<WikiSpace> update(WikiSpace wikiSpace) {
Long id = wikiSpace.getId();
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
if (id != null && id > 0) {
WikiSpace wikiSpaceSel = wikiSpaceService.getById(id);
if (Objects.equals(wikiSpaceSel.getEditType(), 1)) {
return DocResponseJson.warn("当前空间不允许编辑!");
}
if (Objects.equals(wikiSpaceSel.getType(), 3) && !currentUser.getUserId().equals(wikiSpaceSel.getCreateUserId())) {
return DocResponseJson.warn("您没有该空间的编辑权!");
}
wikiSpace.setUuid(null);
wikiSpaceService.updateById(wikiSpace);
} else {
DocUserDetails currentUser = DocUserUtil.getCurrentUser();
wikiSpace.setUuid(RandomUtil.simpleUUID());
wikiSpace.setCreateTime(new Date());
wikiSpace.setCreateUserId(currentUser.getUserId());