| | |
| | | |
| | | public class LoginHandlerInterceptor implements HandlerInterceptor { |
| | | |
| | | /** 与前端 BasePage.adminCode 一致,超级管理员跳过接口权限码校验 */ |
| | | private static final String ADMIN_ROLE_CODE = "admin"; |
| | | |
| | | private RedisTemplate<String,Object> stringRedisTemplate; |
| | | |
| | | |
| | |
| | | LoginUserInfo user = checkLogin(token); |
| | | if (handlerMethod.hasMethodAnnotation(CloudRequiredPermission.class)) { |
| | | CloudRequiredPermission p = handlerMethod.getMethodAnnotation(CloudRequiredPermission.class); |
| | | if(p.value()!=null && p.value().length>0){ |
| | | if (p.value() != null && p.value().length > 0 && !isAdminUser(user)) { |
| | | boolean hasPermission = false; |
| | | for(String s :p.value()){ |
| | | if(user.getPermissions()!=null){ |
| | | for(String t :user.getPermissions()){ |
| | | if(StringUtils.equals(t,s)){ |
| | | for (String s : p.value()) { |
| | | if (user.getPermissions() != null) { |
| | | for (String t : user.getPermissions()) { |
| | | if (StringUtils.equals(t, s)) { |
| | | hasPermission = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (hasPermission) { |
| | | break; |
| | | } |
| | | } |
| | | if(!hasPermission) { |
| | | //没有操作权限 |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"没有该操作权限"); |
| | | if (!hasPermission) { |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "没有该操作权限"); |
| | | } |
| | | } |
| | | } |
| | |
| | | return body; |
| | | } |
| | | |
| | | private boolean isAdminUser(LoginUserInfo user) { |
| | | if (user == null || user.getRoles() == null) { |
| | | return false; |
| | | } |
| | | for (String role : user.getRoles()) { |
| | | if (StringUtils.equals(role, ADMIN_ROLE_CODE)) { |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | private LoginUserInfo checkLogin(String token) { |
| | | if (token == null || token.isEmpty()) { |
| | | throw new BusinessException(ResponseStatus.NO_LOGIN.getCode(),"未登录"); |