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