4228306 5 жил өмнө
parent
commit
75ed0b9127

+ 4 - 6
src/main/java/com/yaoxiang/diagnosis/authority/AuthCheckAspect.java

@@ -52,16 +52,14 @@ public class AuthCheckAspect {
         String role = authCheck.role();
         String authority = authCheck.authority();
         boolean access = authService.check(principal, role, authority);
-        logger.info("check auth for principal={},role={},authority={},access={}", principal, role, authority, access);
-        if (!access) {
-            throw new AuthCheckException("Auth check fail.");
-        }
+        logger.info("checking authority,class={},method={}, principal={},role={},authority={},access={},args={}",
+                joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName(), principal, role, authority, access,joinPoint.getArgs());
         Object result;
         try {
+            Assert.isTrue(access,"Auth check fail");
             result = joinPoint.proceed();
         } catch (Exception e) {
-            logger.error("server error,class={},method={},message={}.", joinPoint.getSignature().getDeclaringTypeName(), joinPoint.getSignature().getName(), e.getMessage());
-            logger.error("server error detail", e);
+            logger.error("internal server error", e);
             throw e;
         }
         return result;

+ 44 - 2
src/main/java/com/yaoxiang/diagnosis/controller/AuthTestController.java

@@ -3,21 +3,63 @@ package com.yaoxiang.diagnosis.controller;
 import com.yaoxiang.diagnosis.authority.AuthCheck;
 import com.yaoxiang.diagnosis.model.AuthUser;
 import com.yaoxiang.diagnosis.util.SecurityUtil;
+import io.swagger.annotations.Api;
 import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+import java.util.concurrent.atomic.AtomicLong;
+
+@Api(tags = "测试")
 @RestController
-@AuthCheck(role = "test")
+@AuthCheck(role = "super_student")
 public class AuthTestController {
 
-    @GetMapping("test/info1")
+    private AtomicLong visitCount = new AtomicLong();
+
+    @GetMapping("/test/info")
+    @AuthCheck(role = "test")
     public AuthUser auth() {
         return SecurityUtil.getCurrentUser();
     }
 
+    @GetMapping("test/info1")
+    public AuthUser auth1() {
+        return SecurityUtil.getCurrentUser();
+    }
+
     @GetMapping("test/info2")
     @AuthCheck(role = "super_student")
     public AuthUser auth2() {
         throw new RuntimeException("hello");
     }
+
+    @GetMapping("/")
+    @AuthCheck
+    public String index() {
+        return "hello";
+    }
+
+    @RequestMapping(value = "/test", method = RequestMethod.GET)
+    public String test() {
+        long cnt = visitCount.incrementAndGet();
+        String name = SecurityUtil.getCurrentUser().getUser().getName();
+        return name + " , Now is " + new Date() + "  and visit times : " + cnt;
+    }
+
+    @RequestMapping(value = "/test2", method = RequestMethod.GET)
+    public String test2() {
+        long cnt = visitCount.incrementAndGet();
+        String name = SecurityUtil.getCurrentUser().getUser().getName();
+        return name + " , Now is " + new Date() + "  and visit times : " + cnt;
+    }
+
+    @RequestMapping(value = "test3", method = RequestMethod.GET)
+    public void test3(HttpServletResponse response) throws Exception {
+        response.getOutputStream().write("hello world".getBytes(StandardCharsets.UTF_8));
+    }
 }

+ 59 - 0
src/main/java/com/yaoxiang/diagnosis/controller/RoleController.java

@@ -0,0 +1,59 @@
+package com.yaoxiang.diagnosis.controller;
+
+import com.yaoxiang.diagnosis.authority.AuthCheck;
+import com.yaoxiang.diagnosis.model.Result;
+import com.yaoxiang.diagnosis.service.RoleService;
+import com.yaoxiang.diagnosis.service.UserService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+@AuthCheck(authority = "role")
+@Api(tags = "角色管理")
+@RestController("role")
+public class RoleController {
+
+    @Resource
+    private RoleService roleService;
+    @Resource
+    private UserService userService;
+
+    @PostMapping("addRole")
+    public Result addRole(String name, String type, String code, String authorityIds) {
+        return roleService.addRole(name, type, code, authorityIds);
+    }
+
+    @PostMapping("updateRole")
+    public Result updateRole(Long id, String name, String type, String code, String authorityIds) {
+        return roleService.updateRole(id, name, type, code, authorityIds);
+    }
+
+    @PostMapping("deleteRole")
+    public Result deleteRole(Long id) {
+        return new Result(userService.deleteRole(id));
+    }
+
+    @GetMapping("list")
+    public Result list(){
+        return Result.ok(roleService.listRoles());
+    }
+
+
+    @PostMapping("addAuthority")
+    public Result addAuthority(String name, String type, String des) {
+        return roleService.addAuthority(name, type, des);
+    }
+
+    @PostMapping("updateAuthority")
+    public Result updateAuthority(Long id, String name, String type, String des) {
+        return roleService.updateAuthority(id, name, type, des);
+    }
+
+    @PostMapping("deleteAuthority")
+    public Result deleteAuthority(Long id) {
+        return new Result(roleService.deleteAuthority(id));
+    }
+}

+ 3 - 75
src/main/java/com/yaoxiang/diagnosis/controller/TestController.java → src/main/java/com/yaoxiang/diagnosis/controller/SpecialExportController.java

@@ -1,7 +1,6 @@
 package com.yaoxiang.diagnosis.controller;
 
 import com.google.gson.reflect.TypeToken;
-import com.yaoxiang.diagnosis.authority.AuthCheck;
 import com.yaoxiang.diagnosis.config.Constants;
 import com.yaoxiang.diagnosis.dao.OptionRepo;
 import com.yaoxiang.diagnosis.dao.QuestionRepo;
@@ -20,7 +19,6 @@ import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -28,16 +26,15 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.*;
-import java.util.concurrent.atomic.AtomicLong;
 
 /**
  * @AUTHOR: DaiFengWen
  * @DATE: Create in 2018/6/29 17:18
  * @DESCRIPTION:
  */
-@Api(tags = "测试")
+@Api(tags = "专项诊断导出")
 @RestController
-public class TestController {
+public class SpecialExportController {
     @Resource
     private OptionRepo optionRepo;
     @Resource
@@ -55,76 +52,7 @@ public class TestController {
     @Resource
     private SpecialReportService specialReportService;
 
-    private AtomicLong visitCount = new AtomicLong();
-
-    private static final Logger logger = LoggerFactory.getLogger(TestController.class);
-
-    @GetMapping("/")
-    public String index() {
-        return "hello";
-    }
-
-    @RequestMapping(value = "/test", method = RequestMethod.GET)
-    public String test() {
-        long cnt = visitCount.incrementAndGet();
-        String name = SecurityUtil.getCurrentUser().getUser().getName();
-        return name + " , Now is " + new Date() + "  and visit times : " + cnt;
-    }
-
-    @RequestMapping(value = "/test2", method = RequestMethod.GET)
-    public String test2() {
-        long cnt = visitCount.incrementAndGet();
-        String name = SecurityUtil.getCurrentUser().getUser().getName();
-        return name + " , Now is " + new Date() + "  and visit times : " + cnt;
-    }
-
-    @GetMapping("/test/info")
-    @AuthCheck(role = "test")
-    public AuthUser auth() {
-        return SecurityUtil.getCurrentUser();
-    }
-
-//    @PreAuthorize("hasRole('ROLE_ADMIN')")
-//    @GetMapping("/temp")
-//    public List<PaperReport> temp() {
-//        List<PaperReport> result = new ArrayList<>();
-//        List<Commit> commitList = commitRepo.findAll();
-//        for (Commit commit : commitList) {
-//            Paper paper = ObjectUtil.json2Object(commit.getData(), Paper.class);
-//            PaperReport paperReport = commitController.generateReport(paper, commit.getUid());
-//            result.add(paperReport);
-//            //		System.out.println(ObjectUtil.object2Json(paperReport));
-//        }
-//        return result;
-//    }
-
-    @GetMapping("/temp1")
-    public void temp1() {
-        List<Question> questions = questionRepo.findByPid(7);
-        questions.sort((q1, q2) -> {
-            int s1 = Math.abs(q1.getSection());
-            int s2 = Math.abs(q2.getSection());
-            if (s2 > s1) {
-                return -1;
-            } else if (s2 == s1) {
-                if (q1.getSection() > q2.getSection()) {
-                    return 1;
-                } else if (q1.getSection() < q2.getSection()) {
-                    return -1;
-                } else {
-                    return 0;
-                }
-
-            } else {
-                return 1;
-            }
-        });
-        Integer num = 1;
-        for (Question question : questions) {
-            question.setNumber(num++);
-            questionRepo.save(question);
-        }
-    }
+    private static final Logger logger = LoggerFactory.getLogger(SpecialExportController.class);
 
     @PostMapping("/upload")
     public Result uploadMatter(@RequestBody MultipartFile file) throws Exception {

+ 2 - 2
src/main/java/com/yaoxiang/diagnosis/service/RoleService.java

@@ -54,7 +54,7 @@ public class RoleService {
         return Result.ok();
     }
 
-    public boolean deleteRole(Long id, Consumer<Role> consumer) {
+    boolean deleteRole(Long id, Consumer<Role> consumer) {
         Role role = roleRepo.findById(id).orElse(null);
         if (role == null) {
             return false;
@@ -79,7 +79,7 @@ public class RoleService {
         }));
     }
 
-    public boolean deleteAuthority(Long id, Consumer<Authority> consumer) {
+    private boolean deleteAuthority(Long id, Consumer<Authority> consumer) {
         Authority authority = authorityRepo.findById(id).orElse(null);
         if (authority == null) {
             return false;