UserService.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package seecoder.devcloud.web.service.user;
  2. import org.springframework.security.core.context.SecurityContextHolder;
  3. import seecoder.devcloud.common.exceptions.AccessDeniedException;
  4. import seecoder.devcloud.common.exceptions.ServiceException;
  5. import seecoder.devcloud.common.util.SpringUtil;
  6. import seecoder.devcloud.web.dao.project.ProjectMapper;
  7. import seecoder.devcloud.web.model.po.project.ProjectPO;
  8. import seecoder.devcloud.web.model.po.user.UserPO;
  9. import seecoder.devcloud.web.model.vo.user.GitlabUserCreateVO;
  10. import seecoder.devcloud.web.model.vo.user.UserVO;
  11. import java.util.List;
  12. public interface UserService {
  13. UserVO createGitlabUser(GitlabUserCreateVO vo) throws ServiceException;
  14. UserVO getLoginUser();
  15. /**
  16. * 用于内部获取登陆用户PO
  17. */
  18. static UserPO loginUser(){
  19. return (UserPO) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
  20. }
  21. /**
  22. * 判断用户是否有权限修改这些流水线配置,用户必须所属这谢谢项目,才具有权限
  23. * 防止用户修改提交的参数从而修改其他组的流水线
  24. * todo 所有涉及项目、用户的功能都必须查看此用户有无此项目的权限
  25. * 但是gitlab那边接口没测所以没有办法
  26. */
  27. static void projectAuthentication(Integer projectId) throws AccessDeniedException {
  28. UserPO userPO = UserService.loginUser();
  29. //todo gitlab获取
  30. List<ProjectPO> projectPOS = SpringUtil.getBean(ProjectMapper.class).listProjectsByUserId(userPO.getId());
  31. if (projectPOS.stream().noneMatch(project -> project.getId()==projectId)){
  32. throw new AccessDeniedException("您没有操作此项目的权限");
  33. }
  34. }
  35. }