24 changed files with 488 additions and 26 deletions
@ -0,0 +1,17 @@ |
|||||
|
package com.ccsens.common.service; |
||||
|
|
||||
|
import com.ccsens.common.bean.dto.CProjectDto; |
||||
|
import com.ccsens.util.bean.dto.QueryDto; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
public interface IPowerService { |
||||
|
/** |
||||
|
* 查询项目内的权限 |
||||
|
* @param projectId 项目id |
||||
|
* @param userId 用户id |
||||
|
* @return 权限 |
||||
|
*/ |
||||
|
Integer queryUserPower(Long projectId,Long userId); |
||||
|
} |
||||
@ -0,0 +1,33 @@ |
|||||
|
package com.ccsens.common.service; |
||||
|
|
||||
|
import cn.hutool.core.util.ObjectUtil; |
||||
|
import com.ccsens.common.bean.dto.CProjectDto; |
||||
|
import com.ccsens.common.persist.dao.ProRoleDao; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Propagation; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
|
||||
|
import javax.annotation.Resource; |
||||
|
|
||||
|
/** |
||||
|
* @author AUSU |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) |
||||
|
public class PowerService implements IPowerService{ |
||||
|
|
||||
|
@Resource |
||||
|
private ProRoleDao roleDao; |
||||
|
|
||||
|
|
||||
|
@Override |
||||
|
public Integer queryUserPower(Long projectId, Long userId) { |
||||
|
Integer power = roleDao.isPmByUserId(userId, projectId); |
||||
|
if (ObjectUtil.isNull(power)) { |
||||
|
return 0; |
||||
|
} |
||||
|
return power; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,80 @@ |
|||||
|
package com.ccsens.signin.config; |
||||
|
|
||||
|
import com.ccsens.signin.bean.po.SysUser; |
||||
|
import com.ccsens.signin.service.IUserService; |
||||
|
import com.ccsens.signin.service.IUserService; |
||||
|
import com.ccsens.util.*; |
||||
|
import io.jsonwebtoken.Claims; |
||||
|
import io.jsonwebtoken.ExpiredJwtException; |
||||
|
import io.jsonwebtoken.SignatureException; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.servlet.HandlerInterceptor; |
||||
|
import org.springframework.web.servlet.ModelAndView; |
||||
|
|
||||
|
import javax.servlet.http.HttpServletRequest; |
||||
|
import javax.servlet.http.HttpServletResponse; |
||||
|
|
||||
|
public class TokenInterceptor implements HandlerInterceptor { |
||||
|
@Autowired |
||||
|
private IUserService userService; |
||||
|
|
||||
|
@Override |
||||
|
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { |
||||
|
// 验证token是否存在
|
||||
|
final String authHeader = httpServletRequest.getHeader(WebConstant.HEADER_KEY_TOKEN); |
||||
|
if (authHeader == null || !authHeader.startsWith(WebConstant.HEADER_KEY_TOKEN_PREFIX)) { |
||||
|
HttpServletUtil.responseJson(httpServletResponse, |
||||
|
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenNotFound())); |
||||
|
return false; |
||||
|
} |
||||
|
final String token = authHeader.substring(WebConstant.HEADER_KEY_TOKEN_PREFIX.length()); |
||||
|
|
||||
|
//验证token是否有效
|
||||
|
Claims claims = null; |
||||
|
try { |
||||
|
claims = JwtUtil.parseJWT(token, WebConstant.JWT_ACCESS_TOKEN_SECERT); |
||||
|
}catch(SignatureException e){ |
||||
|
HttpServletUtil.responseJson(httpServletResponse, |
||||
|
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenSignatureFail(e.getMessage()))); |
||||
|
return false; |
||||
|
}catch(ExpiredJwtException e){ |
||||
|
HttpServletUtil.responseJson(httpServletResponse, |
||||
|
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenExpire(e.getMessage()))); |
||||
|
return false; |
||||
|
}catch(Exception e){ |
||||
|
HttpServletUtil.responseJson(httpServletResponse, |
||||
|
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenFailed(e.getMessage()))); |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
//验证用户存根
|
||||
|
if(userService.tokenNotExistInCache(Long.valueOf(claims.getSubject()))){ |
||||
|
HttpServletUtil.responseJson(httpServletResponse, |
||||
|
JacksonUtil.beanToJson(JsonResponse.newInstance().tokenStubNotFound())); |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
//验证用户是否禁用
|
||||
|
SysUser user = userService.getUserById(Long.valueOf(claims.getSubject())); |
||||
|
if(user.getRecStatus() == WebConstant.REC_STATUS.Disabled.value){ |
||||
|
HttpServletUtil.responseJson(httpServletResponse, |
||||
|
JacksonUtil.beanToJson(JsonResponse.newInstance().userDisabled())); |
||||
|
return false; |
||||
|
} |
||||
|
|
||||
|
//在request中存放claims
|
||||
|
httpServletRequest.setAttribute(WebConstant.REQUEST_KEY_CLAIMS,claims); |
||||
|
return true; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { |
||||
|
|
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { |
||||
|
|
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue