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