refactor: 重构授权管理代码
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnAccountController.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnController.java
similarity index 86%
rename from base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnAccountController.java
rename to base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnController.java
index d74416c..291a80b 100644
--- a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnAccountController.java
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/controller/authn/AuthnController.java
@@ -20,21 +20,23 @@
import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnAccountResourcesResponseData;
import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnAccountResponseData;
import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnAccountRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnResourceRoleListResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.base.domain.model.ResourceRoleSet;
import com.supwisdom.institute.backend.base.domain.service.AccountService;
import com.supwisdom.institute.backend.base.domain.service.PermissionService;
import com.supwisdom.institute.backend.base.domain.service.ResourceService;
import com.supwisdom.institute.backend.base.domain.service.RoleService;
import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
-@Api(value = "BaseAuthnAccount", tags = { "BaseAuthnAccount" }, description = "帐号接口(认证、授权用)")
+@Api(value = "BaseAuthn", tags = { "BaseAuthn" }, description = "认证授权接口")
@Slf4j
@RestController
@RequestMapping("/v1/authn")
-public class AuthnAccountController {
+public class AuthnController {
@Autowired
private AccountService accountService;
@@ -69,11 +71,10 @@
return new DefaultApiResponse<AuthnAccountResponseData>(data);
}
-
@GetMapping(path = "/{username}/roles", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public DefaultApiResponse<AuthnAccountRolesResponseData> roles(
+ public DefaultApiResponse<AuthnAccountRolesResponseData> accountRoles(
@PathVariable("username") String username) {
if (username == null || username.length() == 0) {
@@ -96,7 +97,7 @@
@GetMapping(path = "/{username}/applications", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public DefaultApiResponse<AuthnAccountPermissionsResponseData> applications(
+ public DefaultApiResponse<AuthnAccountPermissionsResponseData> accountApplications(
@PathVariable("username") String username,
@RequestParam(name = "applicationId", required = false) String applicationId) {
@@ -120,7 +121,7 @@
@GetMapping(path = "/{username}/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public DefaultApiResponse<AuthnAccountPermissionsResponseData> menus(
+ public DefaultApiResponse<AuthnAccountPermissionsResponseData> accountMenus(
@PathVariable("username") String username,
@RequestParam(name = "applicationId", required = false) String applicationId) {
@@ -144,7 +145,7 @@
@GetMapping(path = "/{username}/operations", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public DefaultApiResponse<AuthnAccountPermissionsResponseData> operations(
+ public DefaultApiResponse<AuthnAccountPermissionsResponseData> accountOperations(
@PathVariable("username") String username,
@RequestParam(name = "applicationId", required = false) String applicationId) {
@@ -168,7 +169,7 @@
@GetMapping(path = "/{username}/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public DefaultApiResponse<AuthnAccountResourcesResponseData> resources(
+ public DefaultApiResponse<AuthnAccountResourcesResponseData> accountResources(
@PathVariable("username") String username,
@RequestParam(name = "applicationId", required = false) String applicationId) {
@@ -188,5 +189,19 @@
return new DefaultApiResponse<AuthnAccountResourcesResponseData>(data);
}
+
+ @GetMapping(path = "/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnResourceRoleListResponseData> applicationResources(
+ @RequestParam(name = "applicationId", required = false) String applicationId) {
+
+ List<ResourceRoleSet> resourceRoleSets = resourceService.selectByApplication(applicationId);
+
+ AuthnResourceRoleListResponseData data = AuthnResourceRoleListResponseData.of(resourceRoleSets);
+
+ return new DefaultApiResponse<AuthnResourceRoleListResponseData>(data);
+ }
+
}
diff --git a/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnResourceRoleListResponseData.java b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnResourceRoleListResponseData.java
new file mode 100644
index 0000000..9d89d3a
--- /dev/null
+++ b/base/api/src/main/java/com/supwisdom/institute/backend/base/api/v1/vo/response/AuthnResourceRoleListResponseData.java
@@ -0,0 +1,30 @@
+package com.supwisdom.institute.backend.base.api.v1.vo.response;
+
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import com.supwisdom.institute.backend.base.domain.model.ResourceRoleSet;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+public class AuthnResourceRoleListResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -9178840503146742900L;
+
+ @Getter
+ @Setter
+ public List<ResourceRoleSet> resourceRoleSets;
+
+ public static AuthnResourceRoleListResponseData of(List<ResourceRoleSet> resourceRoleSets) {
+ AuthnResourceRoleListResponseData data = new AuthnResourceRoleListResponseData();
+
+ data.setResourceRoleSets(resourceRoleSets);
+
+ return data;
+ }
+
+}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java
index 7fdd8c0..ef218bf 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/entity/Permission.java
@@ -22,6 +22,8 @@
public static final String TYPE_APPLICATION = "1";
public static final String TYPE_MENU = "2";
public static final String TYPE_OPERATION = "3";
+
+ public static final Integer DEFAULT_ORDER = 0;
/**
* 代码
@@ -48,18 +50,6 @@
private String status;
/**
- * 类型(1 应用,2 菜单,3 操作)
- */
- @Column(name = "TYPE_")
- private String type;
-
- /**
- * URL地址
- */
- @Column(name = "URL", nullable = true)
- private String url;
-
- /**
* 系统ID
*/
@Column(name = "APPLICATION_ID", nullable = true)
@@ -72,6 +62,18 @@
private String parentId;
/**
+ * 类型(1 应用,2 菜单,3 操作)
+ */
+ @Column(name = "TYPE_")
+ private String type;
+
+ /**
+ * URL地址
+ */
+ @Column(name = "URL", nullable = true)
+ private String url;
+
+ /**
* 排序
*/
@Column(name = "ORDER_")
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/ResourceRoleSet.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/ResourceRoleSet.java
new file mode 100644
index 0000000..d356ab6
--- /dev/null
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/model/ResourceRoleSet.java
@@ -0,0 +1,23 @@
+package com.supwisdom.institute.backend.base.domain.model;
+
+import java.util.Set;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import com.supwisdom.institute.backend.base.domain.entity.Resource;
+import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.common.framework.model.IModel;
+
+public class ResourceRoleSet extends Resource implements IModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2220390504237330816L;
+
+ @Getter
+ @Setter
+ Set<Role> roles;
+
+}
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionRepository.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionRepository.java
index 623411d..aaa0214 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionRepository.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/repo/PermissionRepository.java
@@ -176,10 +176,10 @@
public default Permission insert(Permission entity) {
if (entity.getParentId() == null) {
- entity.setParentId("0");
+ entity.setParentId(Permission.ROOT_PARENT_ID);
}
- if (entity.getParentId() == null || entity.getParentId().isEmpty() || "0".equals(entity.getParentId())) {
+ if (entity.getParentId() == null || entity.getParentId().isEmpty() || Permission.ROOT_PARENT_ID.equals(entity.getParentId())) {
int maxRgt = selectMaxRgt();
entity.setLft((maxRgt+1));
entity.setRgt((maxRgt+1) + 1);
@@ -218,11 +218,11 @@
//}
if (originEntity.getParentId() == null) {
- originEntity.setParentId("0");
+ originEntity.setParentId(Permission.ROOT_PARENT_ID);
}
if (entity.getParentId() == null) {
- entity.setParentId("0");
+ entity.setParentId(Permission.ROOT_PARENT_ID);
}
if (!originEntity.getParentId().equals(entity.getParentId()) ) {
@@ -234,7 +234,7 @@
List<Permission> childEntities = this.selectBetweenLftRgt(lft, rgt);
- if (entity.getParentId() == null || entity.getParentId().isEmpty() || "0".equals(entity.getParentId())) {
+ if (entity.getParentId() == null || entity.getParentId().isEmpty() || Permission.ROOT_PARENT_ID.equals(entity.getParentId())) {
// 将 lft或rgt 大于等于该对象 rgt 的记录的 lft、rgt -offset
updateLftRgtWhenDelete(rgt, offset);
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ApplicationService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ApplicationService.java
index 7e2fa96..17e7503 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ApplicationService.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ApplicationService.java
@@ -6,7 +6,9 @@
import org.springframework.stereotype.Service;
import com.supwisdom.institute.backend.base.domain.entity.Application;
+import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.base.domain.repo.ApplicationRepository;
+import com.supwisdom.institute.backend.base.domain.repo.PermissionRepository;
import com.supwisdom.institute.backend.common.framework.service.ABaseService;
@Service
@@ -19,7 +21,64 @@
@Autowired
private ApplicationRepository applicationRepository;
+
+ @Autowired
+ private PermissionRepository permissionRepository;
+ @Override
+ public Application insert(Application entity) {
+ entity = super.insert(entity);
+
+ Permission p = new Permission();
+ p.setId(entity.getId());
+ p.setCode(entity.getCode());
+ p.setName(entity.getName());
+ p.setMemo(entity.getMemo());
+ p.setStatus(entity.getStatus());
+ p.setType(Permission.TYPE_APPLICATION);
+ p.setApplicationId(entity.getId());
+ p.setParentId(Permission.ROOT_PARENT_ID);
+ p.setOrder(Permission.DEFAULT_ORDER);
+
+ permissionRepository.insert(p);
+
+ return entity;
+ }
+
+ @Override
+ public Application update(Application entity) {
+ entity = super.update(entity);
+
+ Permission p = permissionRepository.selectById(entity.getId());
+ if (p != null) {
+ p = new Permission();
+ p.setCode(entity.getCode());
+ p.setName(entity.getName());
+ p.setMemo(entity.getMemo());
+ p.setStatus(entity.getStatus());
+ p.setType(Permission.TYPE_APPLICATION);
+ p.setApplicationId(entity.getId());
+ p.setParentId(Permission.ROOT_PARENT_ID);
+ p.setOrder(Permission.DEFAULT_ORDER);
+
+ permissionRepository.update(p);
+ } else {
+ p = new Permission();
+ p.setId(entity.getId());
+ p.setCode(entity.getCode());
+ p.setName(entity.getName());
+ p.setMemo(entity.getMemo());
+ p.setStatus(entity.getStatus());
+ p.setType(Permission.TYPE_APPLICATION);
+ p.setApplicationId(entity.getId());
+ p.setParentId(Permission.ROOT_PARENT_ID);
+ p.setOrder(Permission.DEFAULT_ORDER);
+
+ permissionRepository.insert(p);
+ }
+
+ return entity;
+ }
public void deleteBatch(List<String> ids) {
diff --git a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java
index e044cf5..47424ad 100644
--- a/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java
+++ b/base/domain/src/main/java/com/supwisdom/institute/backend/base/domain/service/ResourceService.java
@@ -6,6 +6,7 @@
import org.springframework.stereotype.Service;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
+import com.supwisdom.institute.backend.base.domain.model.ResourceRoleSet;
import com.supwisdom.institute.backend.base.domain.repo.ResourceRepository;
import com.supwisdom.institute.backend.common.framework.service.ABaseService;
@@ -27,6 +28,11 @@
this.deleteById(id);
});
}
-
+
+
+ public List<ResourceRoleSet> selectByApplication(String applicationId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
}