Pārlūkot izejas kodu

系统管理权限控制

WXF 3 gadi atpakaļ
vecāks
revīzija
dee46b9bec

+ 2 - 1
simulation-oauth-client/src/main/java/com/css/simulation/oauth/client/controller/SignController.java

@@ -185,7 +185,8 @@ public class SignController {
             newUser.setPassword(password);
             newUser.setCompany("国汽");
             newUser.setRoleCode(DictConstants.ROLE_CODE_SUBUESR);//默认为国汽账户子账户
-            newUser.setVisible("1");//启动页面登录功能
+            newUser.setUseType(DictConstants.USE_TYPE_EXCLUSIVE);//占用类型
+            newUser.setVisible("1");//启用登录功能
             newUser.setCreateUserId(oauthParameter.getSimulationZoogooyUserId());
             newUser.setModifyUserId(oauthParameter.getSimulationZoogooyUserId());
             newUser.setCreateTime(TimeUtil.getNowForMysql());

+ 2 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/Application.java

@@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.openfeign.EnableFeignClients;
 import org.springframework.scheduling.annotation.EnableAsync;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
 import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 
@@ -13,6 +14,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
 @EnableResourceServer
 @EnableTransactionManagement
 @EnableAsync
+@EnableGlobalMethodSecurity(prePostEnabled=true)
 public class Application {
 
     public static void main(String[] args) {

+ 12 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/common/exception/GlobalExceptionHandler.java

@@ -4,6 +4,7 @@ import api.common.pojo.common.ResponseBodyVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Scope;
 import org.springframework.http.converter.HttpMessageNotReadableException;
+import org.springframework.security.access.AccessDeniedException;
 import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -35,6 +36,17 @@ public class GlobalExceptionHandler {
         return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "Required request body is missing!");
     }
 
+
+    /**
+     * 权限校验异常统一处理
+     */
+    @ExceptionHandler(AccessDeniedException.class)
+    @ResponseBody
+    public ResponseBodyVO<Object> handleAccessDeniedException(Exception e) {
+        log.error(e.getMessage(), e);
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE, "Access is denied!");
+    }
+
     /**
      * 服务器错误异常统一处理
      */

+ 35 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/common/oauth/AuthorityCheck.java

@@ -0,0 +1,35 @@
+package com.css.simulation.resource.common.oauth;
+
+import api.common.pojo.constants.DictConstants;
+import com.css.simulation.resource.common.utils.AuthUtil;
+import org.springframework.stereotype.Component;
+
+@Component("AuthorityCheck")
+public class AuthorityCheck {
+
+    public boolean admin(){
+        String roleCode = AuthUtil.getCurrentUserRoleCode();
+        switch (roleCode){
+            case DictConstants.ROLE_CODE_SYSADMIN:
+                return true;
+            case DictConstants.ROLE_CODE_ADMIN:
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    public boolean adminAndUser(){
+        String roleCode = AuthUtil.getCurrentUserRoleCode();
+        switch (roleCode){
+            case DictConstants.ROLE_CODE_SYSADMIN:
+                return true;
+            case DictConstants.ROLE_CODE_ADMIN:
+                return true;
+            case DictConstants.ROLE_CODE_UESR:
+                return true;
+            default:
+                return false;
+        }
+    }
+}

+ 2 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/system/ctrl/SceneImportCtrl.java

@@ -10,6 +10,7 @@ import com.css.simulation.resource.feign.SceneService;
 import com.css.simulation.resource.system.service.SceneImportService;
 import com.github.pagehelper.PageInfo;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,6 +21,7 @@ import javax.servlet.http.HttpServletRequest;
 
 @Controller
 @RequestMapping("/sceneImport")
+@PreAuthorize("@AuthorityCheck.admin()")
 public class SceneImportCtrl {
 
     @Autowired