import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountRelateGroupsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountRelateRolesRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountRelatedGroupsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountRelatedRolesRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.AccountUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRelateGroupsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRelateRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRelatedGroupsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRelatedRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AccountUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountRelateGroupsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountRelateRolesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountRelatedGroupsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountRelatedRolesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.AccountUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRelateGroupsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRelateRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRelatedGroupsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRelatedRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.AccountUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.base.domain.entity.AccountGroup;
import com.supwisdom.institute.backend.base.domain.entity.AccountRole;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ApplicationCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ApplicationDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ApplicationQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ApplicationUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ApplicationUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ApplicationCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ApplicationDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ApplicationQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ApplicationUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ApplicationUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.base.domain.service.ApplicationService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ConfigCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ConfigQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ConfigUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ConfigCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ConfigLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ConfigQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ConfigUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ConfigCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ConfigQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ConfigUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ConfigCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ConfigLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ConfigQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ConfigUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.base.domain.exception.ConfigException;
import com.supwisdom.institute.backend.base.domain.service.ConfigService;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupRelateAccountsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupRelateRolesRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupRelatedAccountsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupRelatedRolesRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.GroupUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRelateAccountsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRelateRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRelatedAccountsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRelatedRolesResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.GroupUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupRelateAccountsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupRelateRolesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupRelatedAccountsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupRelatedRolesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.GroupUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRelateAccountsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRelateRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRelatedAccountsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRelatedRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.GroupUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.AccountGroup;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
package com.supwisdom.institute.backend.base.api.v1.controller.admin;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionTreeResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionTreeResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
import com.supwisdom.institute.backend.base.domain.service.PermissionService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
throw new RuntimeException("exception.get.domain.type.error");
}
- PermissionLoadResponseData data = PermissionLoadResponseData.of(permission);
+ List<String> resourceIds = new ArrayList<>();
+
+ Map<String, Object> mapBean = new HashMap<>();
+ mapBean.put("permissionId", id);
+ Page<PermissionResource> permissionResources = permissionService.selectPermissionResources(true, 0, 0, mapBean);
+ for (PermissionResource permissionResource : permissionResources) {
+ resourceIds.add(permissionResource.getResourceId());
+ }
+
+ PermissionLoadResponseData data = PermissionLoadResponseData.of(permission, resourceIds);
return new DefaultApiResponse<PermissionLoadResponseData>(data);
}
import io.swagger.annotations.Api;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.PermissionUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
import com.supwisdom.institute.backend.base.domain.service.PermissionService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
if (!Permission.TYPE_OPERATION.equals(permission.getType())) {
throw new RuntimeException("exception.get.domain.type.error");
}
+
+ List<String> resourceIds = new ArrayList<>();
+
+ Map<String, Object> mapBean = new HashMap<>();
+ mapBean.put("permissionId", id);
+ Page<PermissionResource> permissionResources = permissionService.selectPermissionResources(true, 0, 0, mapBean);
+ for (PermissionResource permissionResource : permissionResources) {
+ resourceIds.add(permissionResource.getResourceId());
+ }
- PermissionLoadResponseData data = PermissionLoadResponseData.of(permission);
+ PermissionLoadResponseData data = PermissionLoadResponseData.of(permission, resourceIds);
return new DefaultApiResponse<PermissionLoadResponseData>(data);
}
package com.supwisdom.institute.backend.base.api.v1.controller.admin;
import java.util.HashMap;
-import java.util.Map;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
import org.springframework.http.HttpStatus;
import org.springframework.util.MimeTypeUtils;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.PermissionTreeResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionRelateResourcesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.PermissionRelatedResourcesRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRelateResourcesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionRelatedResourcesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.PermissionTreeResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
import com.supwisdom.institute.backend.base.domain.service.PermissionService;
import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
return new DefaultApiResponse<PermissionTreeResponseData>(data);
}
-
+
+ @RequestMapping(method = RequestMethod.GET, path = "/{id}/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseBody
+ public DefaultApiResponse<PermissionRelatedResourcesResponseData> permissionResources(
+ @PathVariable("id") String id,
+ PermissionRelatedResourcesRequest request) {
+
+ if (id == null || id.length() == 0) {
+ throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
+ }
+
+ Permission permission = permissionService.selectById(id);
+
+ if (permission == null) {
+ throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
+ }
+
+ if (request.getMapBean() == null) {
+ request.setMapBean(new HashMap<String, Object>());
+ }
+ request.getMapBean().put("permissionId", permission.getId());
+
+ Page<PermissionResource> page = permissionService.selectPermissionResources(
+ request.isLoadAll(),
+ request.getPageIndex(),
+ request.getPageSize(),
+ request.getMapBean());
+
+ PermissionRelatedResourcesResponseData data = PermissionRelatedResourcesResponseData.of(request).build(page);
+
+ return new DefaultApiResponse<PermissionRelatedResourcesResponseData>(data);
+ }
+
+ @RequestMapping(method = RequestMethod.POST, path = "/{id}/resources", consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseBody
+ public DefaultApiResponse<PermissionRelateResourcesResponseData> relateResources(
+ @PathVariable("id") String id,
+ @RequestBody PermissionRelateResourcesRequest permissionResources) {
+
+ if (id == null || id.length() == 0) {
+ throw new RuntimeException("exception.get.id.must.not.empty"); // FIXME: RestException
+ }
+
+ Permission permission = permissionService.selectById(id);
+
+ if (permission == null) {
+ throw new RuntimeException("exception.get.domain.not.exist"); // FIXME: RestException
+ }
+
+ permissionService.relatePermissionResources(permission, permissionResources.getPermissionResources());
+
+ PermissionRelateResourcesResponseData data = PermissionRelateResourcesResponseData.of("info.relate.success");
+
+ return new DefaultApiResponse<PermissionRelateResourcesResponseData>(data);
+ }
+
}
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ResourceCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ResourceQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ResourceUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.ResourceUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ResourceCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ResourceQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ResourceUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.ResourceUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.base.domain.service.ResourceService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelateAccountsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelateGroupsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelatePermissionsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelatedAccountsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelatedGroupsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleRelatedPermissionsRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RoleUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelateAccountsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelateGroupsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelatePermissionsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelatedAccountsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelatedGroupsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRelatedPermissionsResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RoleUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelateAccountsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelateGroupsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelatePermissionsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelatedAccountsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelatedGroupsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleRelatedPermissionsRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RoleUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelateAccountsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelateGroupsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelatePermissionsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelatedAccountsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelatedGroupsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRelatedPermissionsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RoleUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.AccountRole;
import com.supwisdom.institute.backend.base.domain.entity.GroupRole;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteCreateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteDeleteBatchRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteQueryRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.RouteUpdateRequest;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteCreateResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteDeleteBatchResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteLoadResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteQueryResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteRemoveResponseData;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.RouteUpdateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RouteCreateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RouteDeleteBatchRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RouteQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.RouteUpdateRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteCreateResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteDeleteBatchResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteLoadResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteQueryResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteRemoveResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.response.RouteUpdateResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.base.domain.service.RouteService;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
package com.supwisdom.institute.backend.base.api.v1.controller.authn;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
-import com.supwisdom.institute.backend.base.api.v1.vo.response.AuthnAccountPermissionsResponseData;
-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.api.v1.vo.authn.response.AuthnAccountPermissionsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnAccountResourcesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnAccountResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnAccountRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnApplicationsResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnPermissionRoleListResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnResourceRoleListResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnRolesResponseData;
+import com.supwisdom.institute.backend.base.api.v1.vo.authn.response.AuthnRoutesResponseData;
import com.supwisdom.institute.backend.base.domain.entity.Account;
+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.entity.Resource;
import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.base.domain.entity.Route;
+import com.supwisdom.institute.backend.base.domain.model.PermissionRoleSet;
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.ApplicationService;
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.base.domain.service.RouteService;
import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
@Api(value = "BaseAuthn", tags = { "BaseAuthn" }, description = "认证授权接口")
private RoleService roleService;
@Autowired
- private PermissionService permissionService;
+ private ApplicationService applicationService;
@Autowired
- private ResourceService resourceService;
+ private PermissionService permissionService;
+
+ @Autowired
+ private ResourceService resourceService;
+
+ @Autowired
+ private RouteService routeService;
@GetMapping(path = "/{username}/account", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
return new DefaultApiResponse<AuthnAccountResourcesResponseData>(data);
}
- @GetMapping(path = "/resources", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+// @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);
+// }
+
+
+ @GetMapping(path = "/applications", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnApplicationsResponseData> applications() {
+
+ Map<String, Object> mapBean = new HashMap<>();
+ Map<String, String> orderBy = null;
+
+ mapBean.put("status", "1");
+
+ List<Application> applications = applicationService.selectList(mapBean, orderBy);
+
+ AuthnApplicationsResponseData data = AuthnApplicationsResponseData.of(applications);
+
+ return new DefaultApiResponse<AuthnApplicationsResponseData>(data);
+ }
+
+ @GetMapping(path = "/roles", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnRolesResponseData> roles() {
+
+ Map<String, Object> mapBean = new HashMap<>();
+ Map<String, String> orderBy = null;
+
+ mapBean.put("status", "1");
+
+ List<Role> roles = roleService.selectList(mapBean, orderBy);
+
+ AuthnRolesResponseData data = AuthnRolesResponseData.of(roles);
+
+ return new DefaultApiResponse<AuthnRolesResponseData>(data);
+ }
+
+
+ @GetMapping(path = "/permissionRoleSets", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
@ResponseStatus(value = HttpStatus.OK)
@ResponseBody
- public DefaultApiResponse<AuthnResourceRoleListResponseData> applicationResources(
+ public DefaultApiResponse<AuthnPermissionRoleListResponseData> permissionRoleSets(
@RequestParam(name = "applicationId", required = false) String applicationId) {
+
+ Map<String, Object> mapBean = new HashMap<>();
+
+ mapBean.put("status", "1");
+ if (applicationId != null && !applicationId.isEmpty()) {
+ mapBean.put("applicationId", applicationId);
+ }
+
+ List<PermissionRoleSet> permissionRoleSets = permissionService.selectPermissionRoleSet(mapBean);
+
+ AuthnPermissionRoleListResponseData data = AuthnPermissionRoleListResponseData.of(permissionRoleSets);
- List<ResourceRoleSet> resourceRoleSets = resourceService.selectByApplication(applicationId);
+ return new DefaultApiResponse<AuthnPermissionRoleListResponseData>(data);
+ }
+
+
+ @GetMapping(path = "/resourceRoleSets", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnResourceRoleListResponseData> resourceRoleSets(
+ @RequestParam(name = "applicationId", required = false) String applicationId) {
+
+ Map<String, Object> mapBean = new HashMap<>();
+
+ mapBean.put("status", "1");
+
+ List<ResourceRoleSet> resourceRoleSets = resourceService.selectResourceRoleSet(mapBean);
AuthnResourceRoleListResponseData data = AuthnResourceRoleListResponseData.of(resourceRoleSets);
return new DefaultApiResponse<AuthnResourceRoleListResponseData>(data);
}
+
+
+ @GetMapping(path = "/routes", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ @ResponseStatus(value = HttpStatus.OK)
+ @ResponseBody
+ public DefaultApiResponse<AuthnRoutesResponseData> routes() {
+
+ Map<String, Object> mapBean = new HashMap<>();
+ Map<String, String> orderBy = null;
+
+ mapBean.put("status", "1");
+
+ List<Route> routes = routeService.selectList(mapBean, orderBy);
+
+ AuthnRoutesResponseData data = AuthnRoutesResponseData.of(routes);
+
+ return new DefaultApiResponse<AuthnRoutesResponseData>(data);
+ }
+
}
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.controller.authn;
+
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Api(value = "BaseAuthnResource", tags = { "BaseAuthnResource" }, description = "资源接口(认证、授权用)")
+@Slf4j
+@RestController
+@RequestMapping("/v1/authn/resource")
+public class AuthnResourceController {
+
+}
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
+
+import java.util.List;
+
+import lombok.Getter;
+import lombok.Setter;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
*/
private static final long serialVersionUID = 8247861768124918116L;
+ @Getter
+ @Setter
+ private List<String> resourceIds;
+
public Permission getEntity() {
return EntityUtils.copy(this, new Permission());
}
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
+import com.supwisdom.institute.backend.common.framework.vo.request.IApiRequest;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class PermissionRelateResourcesRequest implements IApiRequest {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7016517754275684031L;
+
+ @Getter
+ @Setter
+ private List<PermissionResource> permissionResources;
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Map;
+
+import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author loie
+ */
+public class PermissionRelatedResourcesRequest implements IApiQueryRequest {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7634304817036292579L;
+
+ @Getter
+ @Setter
+ private boolean loadAll = false;
+ @Getter
+ @Setter
+ private int pageIndex = 0;
+ @Getter
+ @Setter
+ private int pageSize = 20;
+ @Getter
+ @Setter
+ @ApiModelProperty(hidden = true)
+ private Map<String, Object> mapBean;
+ @Getter
+ @Setter
+ @ApiModelProperty(hidden = true)
+ private Map<String, String> orderBy;
+
+}
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
+
+import java.util.List;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
@Setter
private String id;
+ @Getter
+ @Setter
+ private List<String> resourceIds;
+
public Permission getEntity() {
return EntityUtils.copy(this, new Permission());
}
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.request;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.request;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Application;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.domain.Page;
-import com.supwisdom.institute.backend.base.api.v1.vo.request.ConfigQueryRequest;
+import com.supwisdom.institute.backend.base.api.v1.vo.admin.request.ConfigQueryRequest;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiQueryResponseData;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Config;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Group;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
+
+import java.util.List;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
@Setter
private String id;
+ @Getter
+ @Setter
+ private List<String> resourceIds;
+
+
private PermissionLoadResponseData() {
}
- public static PermissionLoadResponseData of(Permission entity) {
+ public static PermissionLoadResponseData of(Permission entity, List<String> resourceIds) {
PermissionLoadResponseData data = new PermissionLoadResponseData();
- return EntityUtils.copy(entity, data);
+
+ EntityUtils.copy(entity, data);
+ data.setResourceIds(resourceIds);
+
+ return data;
}
}
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
+
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class PermissionRelateResourcesResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5576856617389758687L;
+
+ @Getter
+ @Setter
+ private String message;
+
+ public PermissionRelateResourcesResponseData(String message) {
+ this.message = message;
+ }
+
+ public static PermissionRelateResourcesResponseData of(String message) {
+ PermissionRelateResourcesResponseData data = new PermissionRelateResourcesResponseData(message);
+
+ return data;
+ }
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.data.domain.Page;
+
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
+import com.supwisdom.institute.backend.common.framework.vo.request.IApiQueryRequest;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiQueryResponseData;
+
+/**
+ * @author loie
+ */
+public class PermissionRelatedResourcesResponseData implements IApiQueryResponseData<PermissionResource> {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -2095633445866557991L;
+
+ private PermissionRelatedResourcesResponseData(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
+ this.loadAll = loadAll;
+ this.pageIndex = pageIndex;
+ this.pageSize = pageSize;
+ this.mapBean = mapBean;
+ this.orderBy = orderBy;
+ }
+
+ public static PermissionRelatedResourcesResponseData of(IApiQueryRequest queryRequest) {
+ PermissionRelatedResourcesResponseData configQueryResponse = new PermissionRelatedResourcesResponseData(
+ queryRequest.isLoadAll(),
+ queryRequest.getPageIndex(),
+ queryRequest.getPageSize(),
+ queryRequest.getMapBean(),
+ queryRequest.getOrderBy()
+ );
+
+ return configQueryResponse;
+ }
+
+ public PermissionRelatedResourcesResponseData build(Page<PermissionResource> page) {
+ this.currentItemCount = page.getNumberOfElements();
+ this.pageCount = page.getTotalPages();
+ this.recordCount = page.getTotalElements();
+ this.items = page.getContent();
+
+ return this;
+ }
+
+ @Getter
+ private boolean loadAll;
+ @Getter
+ private int pageIndex;
+ @Getter
+ private int pageSize;
+ @Getter
+ private Map<String, Object> mapBean;
+ @Getter
+ private Map<String, String> orderBy;
+
+ @Getter
+ @Setter
+ private int pageCount;
+ @Getter
+ @Setter
+ private long recordCount;
+
+ @Getter
+ @Setter
+ private int currentItemCount;
+
+ @Getter
+ @Setter
+ private List<PermissionResource> items;
+
+}
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Resource;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Role;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import lombok.Getter;
import lombok.Setter;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.admin.response;
import com.supwisdom.institute.backend.base.domain.entity.Route;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import java.util.List;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import com.supwisdom.institute.backend.base.domain.entity.Account;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import java.util.List;
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.entity.Application;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class AuthnApplicationsResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 277008963651011910L;
+
+ @Getter
+ @Setter
+ public List<Application> applications;
+
+
+ public static AuthnApplicationsResponseData of(List<Application> applications) {
+ AuthnApplicationsResponseData data = new AuthnApplicationsResponseData();
+
+ data.setApplications(applications);
+
+ return data;
+ }
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.model.PermissionRoleSet;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class AuthnPermissionRoleListResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1484993874632504947L;
+
+ @Getter
+ @Setter
+ public List<PermissionRoleSet> permissionRoleSets;
+
+ public static AuthnPermissionRoleListResponseData of(List<PermissionRoleSet> permissionRoleSets) {
+ AuthnPermissionRoleListResponseData data = new AuthnPermissionRoleListResponseData();
+
+ data.setPermissionRoleSets(permissionRoleSets);
+
+ return data;
+ }
+
+}
-package com.supwisdom.institute.backend.base.api.v1.vo.response;
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
import java.util.List;
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class AuthnRolesResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3695033930841370744L;
+
+ @Getter
+ @Setter
+ public List<Role> roles;
+
+
+ public static AuthnRolesResponseData of(List<Role> roles) {
+ AuthnRolesResponseData data = new AuthnRolesResponseData();
+
+ data.setRoles(roles);
+
+ return data;
+ }
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.base.api.v1.vo.authn.response;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.base.domain.entity.Route;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class AuthnRoutesResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -7221340609572046915L;
+
+ @Getter
+ @Setter
+ public List<Route> routes;
+
+
+ public static AuthnRoutesResponseData of(List<Route> routes) {
+ AuthnRoutesResponseData data = new AuthnRoutesResponseData();
+
+ data.setRoutes(routes);
+
+ return data;
+ }
+
+}
@Column(name = "TYPE_")
private String type;
+ /**
+ * 菜单图标
+ */
+ @Column(name = "ICON", nullable = true)
+ private String icon;
+
/**
* URL地址
*/
--- /dev/null
+package com.supwisdom.institute.backend.base.domain.entity;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Table;
+
+import com.supwisdom.institute.backend.common.framework.entity.ABaseEntity;
+
+@Entity
+@Table(name = "TB_BASE_PERMISSION_RESOURCE")
+public class PermissionResource extends ABaseEntity {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4224037561100974979L;
+
+ /**
+ * 权限ID
+ */
+ @Column(name = "PERMISSION_ID")
+ private String permissionId;
+
+ /**
+ * 资源ID
+ */
+ @Column(name = "RESOURCE_ID")
+ private String resourceId;
+
+ public String getPermissionId() {
+ return permissionId;
+ }
+
+ public void setPermissionId(String permissionId) {
+ this.permissionId = permissionId;
+ }
+
+ public String getResourceId() {
+ return resourceId;
+ }
+
+ public void setResourceId(String resourceId) {
+ this.resourceId = resourceId;
+ }
+
+}
*/
private static final long serialVersionUID = 4288268877209267453L;
+ public static final String ACCESS_ANONYMOUS = "anonymous"; // 匿名访问anonymous
+ public static final String ACCESS_AUTHENTICATE = "authenticate"; // 认证访问authenticate
+ public static final String ACCESS_AUTHORIZE = "authorize"; // 授权访问authorize
+ public static final String ACCESS_PERMIT_ALL = "permitAll"; // 允许所有permitAll
+ public static final String ACCESS_DENY_ALL = "denyAll"; // 拒绝所有denyAll
+
/**
* 代码
*/
@Column(name = "PATH")
private String path;
+ /**
+ * 访问规则(匿名访问anonymous、认证访问authenticate、授权访问authorize、允许所有permitAll、拒绝所有denyAll)
+ */
+ @Getter
+ @Setter
+ @Column(name = "ACCESS")
+ private String access;
+
}
--- /dev/null
+package com.supwisdom.institute.backend.base.domain.model;
+
+import java.util.Collection;
+
+import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
+import com.supwisdom.institute.backend.common.framework.model.IModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class PermissionRoleSet extends Permission implements IModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1823157193945264156L;
+
+ @Getter
+ @Setter
+ Collection<Role> roles;
+
+ public PermissionRoleSet(Permission permission, Collection<Role> roles) {
+
+ EntityUtils.copy(permission, this);
+
+ this.roles = roles;
+ }
+
+}
package com.supwisdom.institute.backend.base.domain.model;
-import java.util.Set;
+import java.util.Collection;
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.entity.EntityUtils;
import com.supwisdom.institute.backend.common.framework.model.IModel;
public class ResourceRoleSet extends Resource implements IModel {
@Getter
@Setter
- Set<Role> roles;
+ Collection<Role> roles;
+
+ public ResourceRoleSet(Resource resource, Collection<Role> roles) {
+
+ EntityUtils.copy(resource, this);
+
+ this.roles = roles;
+ }
}
--- /dev/null
+package com.supwisdom.institute.backend.base.domain.repo;
+
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+import org.springframework.data.domain.Example;
+import org.springframework.data.domain.ExampleMatcher;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Repository;
+
+import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
+import com.supwisdom.institute.backend.base.domain.entity.Resource;
+import com.supwisdom.institute.backend.common.framework.repo.BaseJpaRepository;
+import com.supwisdom.institute.backend.common.util.MapBeanUtils;
+
+@Repository
+public interface PermissionResourceRepository extends BaseJpaRepository<PermissionResource> {
+
+ public default Page<PermissionResource> selectPageList(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+ PermissionResource probe = new PermissionResource();
+ if (mapBean != null) {
+ probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
+ probe.setResourceId(MapBeanUtils.getString(mapBean, "resourceId"));
+ }
+
+ ExampleMatcher matcher = ExampleMatcher.matching()
+ .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
+ .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact());
+
+ PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ Page<PermissionResource> page = this.findAll(example, pageRequest);
+
+ return page;
+ }
+
+ public default Page<PermissionResource> selectPermissionResources(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+ PermissionResource probe = new PermissionResource();
+ if (mapBean != null) {
+ probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
+ probe.setResourceId(MapBeanUtils.getString(mapBean, "resourceId"));
+ }
+
+ ExampleMatcher matcher = ExampleMatcher.matching()
+ .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
+ .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+
+ Page<PermissionResource> page = this.findAll(example, pageRequest); // FIXME: 多表关联查询
+
+ return page;
+ }
+
+ public default void relatePermissionResources(Permission permission, List<PermissionResource> relateResources) {
+
+ List<PermissionResource> existPermissionResources = this.selectListByPermissionId(permission.getId());
+
+ Map<String, PermissionResource> existMapPermissionResources = new LinkedHashMap<String, PermissionResource>();
+ for (PermissionResource permissionResource : existPermissionResources) {
+ String k = String.format("%s", permissionResource.getResourceId());
+ existMapPermissionResources.put(k, permissionResource);
+ }
+
+ for (PermissionResource permissionResource : relateResources) {
+ String k = String.format("%s", permissionResource.getResourceId());
+
+ if (existMapPermissionResources.containsKey(k)) {
+ existMapPermissionResources.remove(k);
+ } else {
+ permissionResource.setCompanyId(permission.getCompanyId());
+ permissionResource.setPermissionId(permission.getId());
+
+ this.insert(permissionResource);
+ }
+ }
+
+ for (PermissionResource rolePermission : existMapPermissionResources.values()) {
+ this.deleteById(rolePermission.getId());
+ }
+ }
+
+ public default List<PermissionResource> selectListByPermissionId(String permissionId) {
+
+ PermissionResource probe = new PermissionResource();
+ probe.setPermissionId(permissionId);
+
+ ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("permissionId",
+ ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ List<PermissionResource> rolePermissions = this.findAll(example);
+
+ return rolePermissions;
+ }
+
+
+ public default void relateResourcePermissions(Resource resource, List<PermissionResource> relatePermissions) {
+
+ // 获取权限已关联的角色
+ List<PermissionResource> existResourcePermissions = this.selectListByResourceId(resource.getId());
+
+ Map<String, PermissionResource> existMapResourcePermissions = new LinkedHashMap<String, PermissionResource>();
+ for (PermissionResource permissionResource : existResourcePermissions) {
+ String k = String.format("%s", permissionResource.getPermissionId());
+ existMapResourcePermissions.put(k, permissionResource);
+ }
+
+ // 保存未关联的角色
+ for (PermissionResource permissionResource : relatePermissions) {
+ String k = String.format("%s", permissionResource.getPermissionId());
+
+ if (existMapResourcePermissions.containsKey(k)) {
+ existMapResourcePermissions.remove(k);
+ } else {
+ permissionResource.setCompanyId(resource.getCompanyId());
+ permissionResource.setResourceId(resource.getId());
+
+ this.insert(permissionResource);
+ }
+ }
+
+ // 删除移除关联的角色
+ for (PermissionResource rolePermission : existMapResourcePermissions.values()) {
+ this.deleteById(rolePermission.getId());
+ }
+ }
+ public default List<PermissionResource> selectListByResourceId(String resourceId) {
+
+ PermissionResource probe = new PermissionResource();
+ probe.setResourceId(resourceId);
+
+ ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("resourceId",
+ ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ List<PermissionResource> rolePermissions = this.findAll(example);
+
+ return rolePermissions;
+ }
+
+
+ public default PermissionResource selectOneByPermissionResource(String permissionId, String resourceId) {
+
+ PermissionResource probe = new PermissionResource();
+ probe.setPermissionId(permissionId);
+ probe.setResourceId(resourceId);
+
+ ExampleMatcher matcher = ExampleMatcher.matching()
+ .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
+ .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact())
+ ;
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ Optional<PermissionResource> o = this.findOne(example);
+
+ return o.isPresent() ? o.get() : null;
+ }
+
+ public default void addPermissionResource(String permissionId, String resourceId) {
+
+ PermissionResource rolePermission = this.selectOneByPermissionResource(permissionId, resourceId);
+
+ if (rolePermission == null) {
+ rolePermission = new PermissionResource();
+ //rolePermission.setCompanyId(companyId);
+ rolePermission.setPermissionId(permissionId);
+ rolePermission.setResourceId(resourceId);
+
+ this.insert(rolePermission);
+ }
+ }
+
+ public default void removePermissionResource(String permissionId, String resourceId) {
+
+ PermissionResource rolePermission = this.selectOneByPermissionResource(permissionId, resourceId);
+
+ if (rolePermission != null) {
+ this.deleteById(rolePermission.getId());
+ }
+ }
+
+}
+ "and r.status='1' and g.status='1' and a.status='1' and a.enabled=1 ")
public List<Role> selectAccountGroupRoleByUsername(@Param("username") String username);
+
+ @Query(value = "select r from Role r "
+ + "inner join RolePermission rp on r.id=rp.roleId "
+ + "inner join Permission p on rp.permissionId=p.id "
+ + "where p.id=:permissionId "
+ + "and r.status='1' and p.status='1' ")
+ public List<Role> selectPermissionRolesByPermission(@Param("permissionId") String permissionId);
+
+
+ @Query(value = "select r from Role r "
+ + "inner join RolePermission rp on r.id=rp.roleId "
+ + "inner join Permission p on rp.permissionId=p.id "
+ + "inner join PermissionResource pres on p.id=pres.permissionId "
+ + "inner join Resource res on pres.resourceId=res.id "
+ + "where res.id=:resourceId "
+ + "and r.status='1' and p.status='1' and res.status='1' ")
+ public List<Role> selectResourceRolesByResource(@Param("resourceId") String resourceId);
+
}
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
+import org.springframework.data.domain.ExampleMatcher;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;
import com.supwisdom.institute.backend.base.domain.entity.Permission;
+import com.supwisdom.institute.backend.base.domain.entity.PermissionResource;
+import com.supwisdom.institute.backend.base.domain.entity.Role;
+import com.supwisdom.institute.backend.base.domain.model.PermissionRoleSet;
import com.supwisdom.institute.backend.base.domain.model.PermissionTreeNode;
import com.supwisdom.institute.backend.base.domain.repo.PermissionRepository;
+import com.supwisdom.institute.backend.base.domain.repo.PermissionResourceRepository;
+import com.supwisdom.institute.backend.base.domain.repo.RoleRepository;
import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
import com.supwisdom.institute.backend.common.framework.service.ABaseService;
+import com.supwisdom.institute.backend.common.util.MapBeanUtils;
@Slf4j
@Service
@Autowired
private PermissionRepository permissionRepository;
-
+
+ @Autowired
+ private PermissionResourceRepository permissionResourceRepository;
+
+ @Autowired
+ private RoleRepository roleRepository;
+
@Override
public Permission insert(Permission entity) {
Permission parentPermission = permissionRepository.selectById(entity.getParentId());
});
}
+
+
+ public Page<PermissionResource> selectPermissionResources(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+ if (loadAll) {
+ pageIndex = 0;
+ pageSize = Integer.MAX_VALUE;
+ }
+
+ PermissionResource probe = new PermissionResource();
+ if (mapBean != null) {
+ probe.setPermissionId(MapBeanUtils.getString(mapBean, "permissionId"));
+ probe.setResourceId(MapBeanUtils.getString(mapBean, "resourceId"));
+ }
+
+ ExampleMatcher matcher = ExampleMatcher.matching()
+ .withMatcher("permissionId", ExampleMatcher.GenericPropertyMatchers.exact())
+ .withMatcher("resourceId", ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+
+ Page<PermissionResource> page = permissionResourceRepository.findAll(example, pageRequest); // FIXME: 多表关联查询
+
+ return page;
+ }
+
+ public void relatePermissionResources(Permission permission, List<PermissionResource> permissionResources) {
+
+ List<PermissionResource> existPermissionResources = this.selectPermissionResourcesByPermissionId(permission.getId());
+
+ Map<String, PermissionResource> existMapPermissionResources = new LinkedHashMap<String, PermissionResource>();
+ for (PermissionResource permissionResource : existPermissionResources) {
+ String k = String.format("%s", permissionResource.getPermissionId());
+ existMapPermissionResources.put(k, permissionResource);
+ }
+
+ for (PermissionResource permissionResource : permissionResources) {
+ String k = String.format("%s", permissionResource.getPermissionId());
+
+ if (existMapPermissionResources.containsKey(k)) {
+ existMapPermissionResources.remove(k);
+ } else {
+ permissionResource.setCompanyId(permission.getCompanyId());
+ permissionResource.setPermissionId(permission.getId());
+
+ permissionResourceRepository.insert(permissionResource);
+ }
+ }
+
+ for (PermissionResource permissionResource : existMapPermissionResources.values()) {
+ permissionResourceRepository.deleteById(permissionResource.getId());
+ }
+ }
+
+ public List<PermissionResource> selectPermissionResourcesByPermissionId(String permissionId) {
+
+ PermissionResource probe = new PermissionResource();
+ probe.setPermissionId(permissionId);
+
+ ExampleMatcher matcher = ExampleMatcher.matching().withMatcher("permissionId",
+ ExampleMatcher.GenericPropertyMatchers.exact());
+
+ Example<PermissionResource> example = Example.of(probe, matcher);
+
+ List<PermissionResource> permissionResources = permissionResourceRepository.findAll(example);
+
+ return permissionResources;
+ }
+
+
private Permission selectApplicationPermission() {
Permission permission = permissionRepository.selectById(Permission.APPLICATION_ID);
return convertPermissionTree(permissions, rootTreeNodeId);
}
+ public List<PermissionRoleSet> selectPermissionRoleSet(Map<String, Object> mapBean) {
+
+ List<PermissionRoleSet> prsList = new ArrayList<>();
+
+ List<Permission> resourceList = permissionRepository.selectList(mapBean, null);
+
+ for (Permission permission : resourceList) {
+
+ List<Role> roleList = roleRepository.selectPermissionRolesByPermission(permission.getId());
+
+ PermissionRoleSet prs = new PermissionRoleSet(permission, roleList);
+
+ prsList.add(prs);
+ }
+
+ return prsList;
+ }
+
}
package com.supwisdom.institute.backend.base.domain.service;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
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.repo.ResourceRepository;
+import com.supwisdom.institute.backend.base.domain.repo.RoleRepository;
import com.supwisdom.institute.backend.common.framework.service.ABaseService;
@Service
@Autowired
private ResourceRepository resourceRepository;
+ @Autowired
+ private RoleRepository roleRepository;
+
public void deleteBatch(List<String> ids) {
}
- public List<ResourceRoleSet> selectByApplication(String applicationId) {
- // TODO Auto-generated method stub
- return null;
+ public List<ResourceRoleSet> selectResourceRoleSet(Map<String, Object> mapBean) {
+
+ List<ResourceRoleSet> rrsList = new ArrayList<>();
+
+ List<Resource> resourceList = resourceRepository.selectList(mapBean, null);
+
+ for (Resource resource : resourceList) {
+
+ List<Role> roleList = roleRepository.selectResourceRolesByResource(resource.getId());
+
+ ResourceRoleSet rrs = new ResourceRoleSet(resource, roleList);
+
+ rrsList.add(rrs);
+ }
+
+ return rrsList;
}
}
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
+import org.springframework.scheduling.annotation.EnableScheduling;
import com.supwisdom.infras.online.doc.configuration.EnableInfrasOnlineDoc;
import com.supwisdom.institute.backend.common.core.transmit.annotation.EnableSimpleUserTransmit;
@SpringBootApplication
@EnableFeignClients
+@EnableScheduling
+
@EnableSimpleUserTransmit
@EnableCustomExceptionHandler
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.autorefesh.base;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
+
+import lombok.extern.slf4j.Slf4j;
+
+@Slf4j
+@Component
+public class InMemeryPermissionRoleSetAutoRefresh {
+
+ @Autowired
+ private AuthnService authnService;
+
+ @Scheduled(initialDelayString = "${inMemeryPermissionRoleSetAutoRefresh.schedule.startDelay:500}",
+ fixedDelayString = "${inMemeryPermissionRoleSetAutoRefresh.schedule.repeatInterval:20000}")
+ public void refresh() {
+ log.info("InMemeryPermissionRoleSetAutoRefresh, refresh permissionRoleSets");
+
+ authnService.loadPermissionRoleSets();
+ }
+
+}
import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Permission;
import com.supwisdom.institute.backend.admin.bff.api.v1.model.me.CurrentUser;
import com.supwisdom.institute.backend.admin.bff.api.v1.model.me.GrantedMenu;
-import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnAccountService;
+import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
import com.supwisdom.institute.backend.admin.bff.api.v1.vo.me.response.data.CurrentUserResponseData;
import com.supwisdom.institute.backend.admin.bff.api.v1.vo.me.response.data.GrantedMenusResponseData;
import com.supwisdom.institute.backend.admin.bff.utils.CurrentUserUtil;
public class MeController {
@Autowired
- private AuthnAccountService authnAccountService;
+ private AuthnService authnService;
@ApiOperation(
tags = { "me" },
@ApiOperation(
tags = { "me" },
- value = "获取登录用户的访问菜单", notes = "获取登录用户的访问菜单", nickname = "menus"
+ value = "获取登录用户的访问菜单", notes = "获取登录用户的访问菜单", nickname = "accountMenus"
)
@RequestMapping(method = RequestMethod.GET, path = "/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
- public DefaultApiResponse<GrantedMenusResponseData> menus() {
+ public DefaultApiResponse<GrantedMenusResponseData> accountMenus() {
String username = CurrentUserUtil.currentUsername();
- List<Permission> menus = authnAccountService.menus(username, "1");
+ List<Permission> menus = authnService.menus(username, "1"); // XXX: applicationId
List<GrantedMenu> grantedMenus = new ArrayList<>();
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.controller.open;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.MimeTypeUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.PermissionRoleSet;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.open.Menu;
+import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
+import com.supwisdom.institute.backend.admin.bff.api.v1.vo.open.response.data.MenusResponseData;
+import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@Api(value = "BFFOpen", tags = { "open" }, description = "公开接口")
+@RestController
+@RequestMapping(value = "/api/v1/open")
+public class OpenController {
+
+ @Autowired
+ private AuthnService authnService;
+
+ @ApiOperation(
+ tags = { "open" },
+ value = "获取菜单", notes = "获取菜单", nickname = "openMenus"
+ )
+ @RequestMapping(method = RequestMethod.GET, path = "/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ public DefaultApiResponse<MenusResponseData> menus(
+ @RequestParam(name = "applicationId", required = false) String applicationId) {
+
+ List<Menu> menus = new ArrayList<>();
+
+ List<PermissionRoleSet> permissionRoleSets = authnService.getPermissionRoleSets(applicationId);
+ if (permissionRoleSets != null) {
+ for (PermissionRoleSet permissionRoleSet : permissionRoleSets) {
+ Menu menu = new Menu();
+ BeanUtils.copyProperties(permissionRoleSet, menu);
+ menus.add(menu);
+ }
+ }
+
+ MenusResponseData data = MenusResponseData.of(menus);
+ return new DefaultApiResponse<MenusResponseData>(data);
+ }
+
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.controller.open;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.MimeTypeUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Role;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.open.SyncRoleModel;
+import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
+import com.supwisdom.institute.backend.admin.bff.api.v1.vo.open.response.data.OpenSyncRolesResponseData;
+import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@Api(value = "BFFOpen", tags = { "open" }, description = "公开接口")
+@RestController
+@RequestMapping(value = "/api/v1/open/sync")
+public class OpenSyncController {
+
+ @Autowired
+ private AuthnService authnService;
+
+ @ApiOperation(
+ tags = { "open" },
+ value = "获取角色", notes = "获取角色", nickname = "openRoles"
+ )
+ @RequestMapping(method = RequestMethod.GET, path = "/roles", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+ public DefaultApiResponse<OpenSyncRolesResponseData> roles(
+ @RequestParam(name = "applicationId", required = true) String applicationId) {
+
+ List<SyncRoleModel> syncRoleModels = new ArrayList<>();
+
+ List<Role> systemRoles = authnService.roles();
+ for (Role systemRole : systemRoles) {
+ SyncRoleModel syncRoleModel = new SyncRoleModel(
+ systemRole.getId(),
+ systemRole.getCode(),
+ systemRole.getName(),
+ systemRole.getMemo());
+ syncRoleModels.add(syncRoleModel);
+ }
+
+ OpenSyncRolesResponseData data = OpenSyncRolesResponseData.of(applicationId, syncRoleModels);
+ return new DefaultApiResponse<OpenSyncRolesResponseData>(data);
+ }
+
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class Application extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 7687658763529677076L;
+
+ private String id;
+
+ /**
+ * 代码
+ */
+ private String code;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 备注
+ */
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ private String status;
+
+}
*/
private String status;
+ /**
+ * 菜单图标
+ */
+ private String icon;
+
/**
* 类型(1 应用,2 菜单,3 操作)
*/
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class PermissionRoleSet extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1482739465611090145L;
+
+ @Getter
+ @Setter
+ private String id;
+
+ /**
+ * 代码
+ */
+ @Getter
+ @Setter
+ private String code;
+
+ /**
+ * 名称
+ */
+ @Getter
+ @Setter
+ private String name;
+
+ /**
+ * 备注
+ */
+ @Getter
+ @Setter
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ @Getter
+ @Setter
+ private String status;
+
+ /**
+ * 类型(1 应用,2 菜单,3 操作)
+ */
+ @Getter
+ @Setter
+ private String type;
+
+ /**
+ * 菜单图标
+ */
+ @Getter
+ @Setter
+ private String icon;
+
+ /**
+ * URL地址
+ */
+ @Getter
+ @Setter
+ private String url;
+
+ /**
+ * 系统ID
+ */
+ @Getter
+ @Setter
+ private String applicationId;
+
+ /**
+ * 父级ID
+ */
+ @Getter
+ @Setter
+ private String parentId;
+
+ /**
+ * 排序
+ */
+ @Getter
+ @Setter
+ private Integer order;
+
+ @Getter
+ @Setter
+ private Collection<Role> roles;
+
+ private Collection<String> permissionRoles = null;
+ public boolean matches(Collection<String> userRoles) {
+ if (permissionRoles == null) {
+ permissionRoles = new ArrayList<String>();
+ Iterator<Role> it = roles.iterator();
+ while (it.hasNext()) {
+ Role r = it.next();
+ permissionRoles.add(r.getCode());
+ }
+ }
+
+ userRoles.retainAll(permissionRoles);
+
+ return !userRoles.isEmpty();
+ }
+
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.base;
+
+import java.util.Collection;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class ResourceRoleSet extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -683204173918706673L;
+
+ public static final String ACCESS_ANONYMOUS = "anonymous"; // 匿名访问anonymous
+ public static final String ACCESS_AUTHENTICATE = "authenticate"; // 认证访问authenticate
+ public static final String ACCESS_AUTHORIZE = "authorize"; // 授权访问authorize
+ public static final String ACCESS_PERMIT_ALL = "permitAll"; // 允许所有permitAll
+ public static final String ACCESS_DENY_ALL = "denyAll"; // 拒绝所有denyAll
+
+ @Getter
+ @Setter
+ private String id;
+
+ /**
+ * 代码
+ */
+ @Getter
+ @Setter
+ private String code;
+
+ /**
+ * 名称
+ */
+ @Getter
+ @Setter
+ private String name;
+
+ /**
+ * 备注
+ */
+ @Getter
+ @Setter
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ @Getter
+ @Setter
+ private String status;
+
+ /**
+ * 请求方式(GET、POST、PUT、DELETE 等)
+ */
+ @Getter
+ @Setter
+ private String method;
+
+ /**
+ * 请求路径
+ */
+ @Getter
+ @Setter
+ private String path;
+
+ /**
+ * 访问规则(匿名访问anonymous、认证访问authenticate、授权访问authorize、允许所有permitAll、拒绝所有denyAll)
+ */
+ @Getter
+ @Setter
+ private String access;
+
+ @Getter
+ @Setter
+ Collection<Role> roles;
+
+}
*/
private String status;
+ /**
+ * 菜单图标
+ */
+ private String icon;
+
/**
* URL地址
*/
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.open;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class Menu extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4206010261706882919L;
+
+ private String id;
+
+ /**
+ * 代码
+ */
+ private String code;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 备注
+ */
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ private String status;
+
+ /**
+ * 菜单图标
+ */
+ private String icon;
+
+ /**
+ * URL地址
+ */
+ private String url;
+
+ /**
+ * 系统ID
+ */
+ private String applicationId;
+
+ /**
+ * 父级ID
+ */
+ private String parentId;
+
+ /**
+ * 排序
+ */
+ private Integer order;
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.model.open;
+
+import java.io.Serializable;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+@AllArgsConstructor
+public class SyncRoleModel implements Serializable {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -1916611618482825238L;
+
+ /**
+ * ID
+ */
+ private String id;
+
+ /**
+ * 代码
+ */
+ private String code;
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 描述
+ */
+ private String memo;
+
+}
import feign.hystrix.FallbackFactory;
@Component
-public class AuthnAccountRemoteFallbackFactory implements FallbackFactory<AuthnAccountRemoteFeignClient> {
+public class AuthnRemoteFallbackFactory implements FallbackFactory<AuthnRemoteFeignClient> {
@Override
- public AuthnAccountRemoteFeignClient create(Throwable cause) {
- return new AuthnAccountRemoteFeignClient() {
+ public AuthnRemoteFeignClient create(Throwable cause) {
+ return new AuthnRemoteFeignClient() {
@Override
public JSONObject account(String username) {
return FallbackError.defaultErrorJson(cause);
}
+
+ @Override
+ public JSONObject applications() {
+ if (cause != null) {
+ cause.printStackTrace();
+ }
+ return FallbackError.defaultErrorJson(cause);
+ }
+
+ @Override
+ public JSONObject roles() {
+ if (cause != null) {
+ cause.printStackTrace();
+ }
+ return FallbackError.defaultErrorJson(cause);
+ }
+
+ @Override
+ public JSONObject permissionRoleSets(String applicationId) {
+ if (cause != null) {
+ cause.printStackTrace();
+ }
+ return FallbackError.defaultErrorJson(cause);
+ }
+
+ @Override
+ public JSONObject resourceRoleSets(String applicationId) {
+ if (cause != null) {
+ cause.printStackTrace();
+ }
+ return FallbackError.defaultErrorJson(cause);
+ }
+
};
}
configuration = {BaseFeignClientConfiguration.class},
name = "base-admin-account-remote-feign-client",
url = "${sw-backend-base-api.uri}/v1/authn",
- fallbackFactory = AuthnAccountRemoteFallbackFactory.class
+ fallbackFactory = AuthnRemoteFallbackFactory.class
)
-public interface AuthnAccountRemoteFeignClient {
+public interface AuthnRemoteFeignClient {
@RequestMapping(method = RequestMethod.GET, path = "/{username}/account")
JSONObject account(
@PathVariable(name = "username") String username,
@RequestParam(name = "applicationId", required = false) String applicationId);
+
+ @RequestMapping(method = RequestMethod.GET, path = "/applications")
+ JSONObject applications();
+
+ @RequestMapping(method = RequestMethod.GET, path = "/roles")
+ JSONObject roles();
+
+ @RequestMapping(method = RequestMethod.GET, path = "/permissionRoleSets")
+ JSONObject permissionRoleSets(
+ @RequestParam(name = "applicationId", required = false) String applicationId);
+
+ @RequestMapping(method = RequestMethod.GET, path = "/resourceRoleSets")
+ JSONObject resourceRoleSets(
+ @RequestParam(name = "applicationId", required = false) String applicationId);
+
}
+++ /dev/null
-package com.supwisdom.institute.backend.admin.bff.api.v1.service.base;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.alibaba.fastjson.JSONObject;
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Account;
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Permission;
-import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Role;
-import com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.v1.authn.AuthnAccountRemoteFeignClient;
-
-@Service
-public class AuthnAccountService {
-
- @Autowired
- private AuthnAccountRemoteFeignClient authnAccountRemote;
-
- public Account account(String username) {
-
- JSONObject jsonObject = authnAccountRemote.account(username);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.toJavaObject(Account.class);
- }
-
- return null;
- }
-
- public List<Role> roles(String username) {
-
- JSONObject jsonObject = authnAccountRemote.roles(username);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.getJSONArray("roles").toJavaList(Role.class);
- }
-
- return null;
- }
-
- public List<Permission> menus(String username, String applicationId) {
-
- JSONObject jsonObject = authnAccountRemote.menus(username, applicationId);
- if (jsonObject == null) {
- return null;
- }
-
- if (jsonObject.getIntValue("code") == 0) {
- JSONObject data = jsonObject.getJSONObject("data");
-
- return data.getJSONArray("permissions").toJavaList(Permission.class);
- }
-
- return null;
- }
-
-}
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.service.base;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import lombok.extern.slf4j.Slf4j;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.alibaba.fastjson.JSONObject;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Account;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Application;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Permission;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.PermissionRoleSet;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.ResourceRoleSet;
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Role;
+import com.supwisdom.institute.backend.admin.bff.api.v1.remote.base.v1.authn.AuthnRemoteFeignClient;
+
+@Slf4j
+@Service
+public class AuthnService {
+
+ @Autowired
+ private AuthnRemoteFeignClient authnRemote;
+
+ public Account account(String username) {
+
+ JSONObject jsonObject = authnRemote.account(username);
+ if (jsonObject == null) {
+ return null;
+ }
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.toJavaObject(Account.class);
+ }
+
+ return null;
+ }
+
+ public List<Role> roles(String username) {
+
+ JSONObject jsonObject = authnRemote.roles(username);
+ if (jsonObject == null) {
+ return null;
+ }
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("roles").toJavaList(Role.class);
+ }
+
+ return null;
+ }
+
+ public List<Permission> menus(String username, String applicationId) {
+
+ JSONObject jsonObject = authnRemote.menus(username, applicationId);
+ if (jsonObject == null) {
+ return null;
+ }
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("permissions").toJavaList(Permission.class);
+ }
+
+ return null;
+ }
+
+
+ public List<Application> applications() {
+
+ try {
+ JSONObject jsonObject = authnRemote.applications();
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("applications").toJavaList(Application.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ public List<Role> roles() {
+
+ try {
+ JSONObject jsonObject = authnRemote.roles();
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("roles").toJavaList(Role.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+
+
+
+
+ public static volatile Map<String, List<PermissionRoleSet>> mapPermissionRoleSets =
+ new HashMap<String, List<PermissionRoleSet>>();
+
+ public void putPermissionRoleSets(String applicationId, List<PermissionRoleSet> permissionRoleSets) {
+ AuthnService.mapPermissionRoleSets.put(applicationId, permissionRoleSets);
+ }
+
+ public List<PermissionRoleSet> getPermissionRoleSets(String applicationId) {
+ if (StringUtils.isNotEmpty(applicationId)) {
+ return AuthnService.mapPermissionRoleSets.get(applicationId);
+ }
+
+ List<PermissionRoleSet> allPermissionRoleSets = new ArrayList<>();
+ for (List<PermissionRoleSet> permissionRoleSets : AuthnService.mapPermissionRoleSets.values()) {
+ allPermissionRoleSets.addAll(permissionRoleSets);
+ }
+
+ return allPermissionRoleSets;
+ }
+
+ public void loadPermissionRoleSets() {
+
+ List<Application> applications = applications();
+ if (applications != null) {
+ for (Application application : applications) {
+ String applicationId = application.getId();
+ List<PermissionRoleSet> permissionRoleSets = this.permissionRoleSets(applicationId);
+ if (permissionRoleSets != null) {
+ this.putPermissionRoleSets(applicationId, permissionRoleSets);
+ }
+ }
+ }
+ }
+
+
+ public List<PermissionRoleSet> permissionRoleSets(String applicationId) {
+
+ try {
+ JSONObject jsonObject = authnRemote.permissionRoleSets(applicationId);
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("permissionRoleSets").toJavaList(PermissionRoleSet.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+ public List<ResourceRoleSet> resourceRoleSets() {
+
+ try {
+ JSONObject jsonObject = authnRemote.resourceRoleSets(null);
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.containsKey("code") && jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("resourceRoleSets").toJavaList(ResourceRoleSet.class);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.vo.open.response.data;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.open.Menu;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class MenusResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -3516729316884770800L;
+
+ @Getter
+ @Setter
+ private List<Menu> menus;
+
+ public static MenusResponseData of(List<Menu> menus) {
+ MenusResponseData data = new MenusResponseData();
+
+ data.setMenus(menus);
+
+ return data;
+ }
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.admin.bff.api.v1.vo.open.response.data;
+
+import java.util.List;
+
+import com.supwisdom.institute.backend.admin.bff.api.v1.model.open.SyncRoleModel;
+import com.supwisdom.institute.backend.common.framework.vo.response.data.IApiResponseData;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class OpenSyncRolesResponseData implements IApiResponseData {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2739730369123803327L;
+
+ @Getter
+ @Setter
+ private String applicationId;
+
+ @Getter
+ @Setter
+ private List<SyncRoleModel> roles;
+
+ public static OpenSyncRolesResponseData of(String applicationId, List<SyncRoleModel> roles) {
+ OpenSyncRolesResponseData data = new OpenSyncRolesResponseData();
+
+ data.setRoles(roles);
+
+ return data;
+ }
+
+}
package com.supwisdom.institute.backend.common.framework.repo;
import java.util.Calendar;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
return null;
}
+ public default List<E> selectList(Map<String, Object> mapBean, Map<String, String> orderBy) {
+
+ Specification<E> spec = convertToSpec(mapBean);
+
+ Sort sort = convertToSort(orderBy);
+
+ if (sort != null) {
+ return this.findAll(spec, sort);
+ }
+
+ return this.findAll(spec);
+ }
+
public default Page<E> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
Specification<E> spec = convertToSpec(mapBean);
package com.supwisdom.institute.backend.common.framework.service;
+import java.util.List;
import java.util.Map;
import org.springframework.data.domain.Page;
public abstract class ABaseService<E extends ABaseEntity, REPO extends BaseJpaRepository<E>> {
public abstract REPO getRepo();
+
+
+ public List<E> selectList(Map<String, Object> mapBean, Map<String, String> orderBy) {
+ return getRepo().selectList(mapBean, orderBy);
+ }
public Page<E> selectPageList(boolean loadAll, int pageIndex, int pageSize, Map<String, Object> mapBean, Map<String, String> orderBy) {
*/
private String type;
+ /**
+ * 菜单图标
+ */
+ private String icon;
+
/**
* URL地址
*/
--- /dev/null
+package com.supwisdom.institute.backend.gateway.authn.model;
+
+public class PermissionRoleSet {
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.gateway.authn.model;
+
+import java.util.Collection;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class ResourceRoleSet extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = -683204173918706673L;
+
+ public static final String ACCESS_ANONYMOUS = "anonymous"; // 匿名访问anonymous
+ public static final String ACCESS_AUTHENTICATE = "authenticate"; // 认证访问authenticate
+ public static final String ACCESS_AUTHORIZE = "authorize"; // 授权访问authorize
+ public static final String ACCESS_PERMIT_ALL = "permitAll"; // 允许所有permitAll
+ public static final String ACCESS_DENY_ALL = "denyAll"; // 拒绝所有denyAll
+
+ @Getter
+ @Setter
+ private String id;
+
+ /**
+ * 代码
+ */
+ @Getter
+ @Setter
+ private String code;
+
+ /**
+ * 名称
+ */
+ @Getter
+ @Setter
+ private String name;
+
+ /**
+ * 备注
+ */
+ @Getter
+ @Setter
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ @Getter
+ @Setter
+ private String status;
+
+ /**
+ * 请求方式(GET、POST、PUT、DELETE 等)
+ */
+ @Getter
+ @Setter
+ private String method;
+
+ /**
+ * 请求路径
+ */
+ @Getter
+ @Setter
+ private String path;
+
+ /**
+ * 访问规则(匿名访问anonymous、认证访问authenticate、授权访问authorize、允许所有permitAll、拒绝所有denyAll)
+ */
+ @Getter
+ @Setter
+ private String access;
+
+ @Getter
+ @Setter
+ Collection<Role> roles;
+
+}
--- /dev/null
+package com.supwisdom.institute.backend.gateway.authn.model;
+
+import com.supwisdom.institute.backend.common.framework.model.ABaseModel;
+
+import lombok.Getter;
+import lombok.Setter;
+
+public class Route extends ABaseModel {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1254295553813507087L;
+
+ @Getter
+ @Setter
+ private String id;
+
+ /**
+ * 代码
+ */
+ @Getter
+ @Setter
+ private String code;
+
+ /**
+ * 名称
+ */
+ @Getter
+ @Setter
+ private String name;
+
+ /**
+ * 备注
+ */
+ @Getter
+ @Setter
+ private String memo;
+
+ /**
+ * 状态(1 启用,0 停用)
+ */
+ @Getter
+ @Setter
+ private String status;
+
+ /**
+ * 路径前缀
+ */
+ @Getter
+ @Setter
+ private String pathPrefix;
+
+ /**
+ * 路由地址
+ */
+ @Getter
+ @Setter
+ private String url;
+
+ /**
+ * 是否排除前缀
+ */
+ @Getter
+ @Setter
+ private Boolean stripPrefix;
+
+}
import org.springframework.web.client.RestTemplate;
@Configuration
-public class AuthnAccountRestTemplateConfig {
+public class AuthnRestTemplateConfig {
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(
return factory;
}
+ SSLContextBuilder sslContextBuilder = SSLContexts.custom();
+
+ if (trustStore == null || trustStore.isEmpty()) {
+ } else {
+ try {
+ sslContextBuilder
+ .loadTrustMaterial(
+ ResourceUtils.getFile(trustStore),
+ trustStorePassword.toCharArray()
+ );
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
if (keyStore == null || keyStore.isEmpty()) {
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);// 单位为ms
return factory;
} else {
try {
- SSLContextBuilder sslContextBuilder = SSLContexts.custom();
- if (trustStore == null || trustStore.isEmpty()) {
- } else {
- sslContextBuilder
-// .loadTrustMaterial(TrustAllStrategy.INSTANCE)
- .loadTrustMaterial(
- ResourceUtils.getFile(trustStore),
- trustStorePassword.toCharArray()
- );
- }
-
sslContextBuilder
.loadKeyMaterial(
ResourceUtils.getFile(keyStore),
keyStorePassword.toCharArray(),
keyPassword.toCharArray());
-
- SSLContext sslContext = sslContextBuilder.build();
-
- SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
- sslContext,
- SSLConnectionSocketFactory.getDefaultHostnameVerifier());
-
- CloseableHttpClient httpClient = HttpClients.custom()
- .setSSLSocketFactory(sslsf)
- .build();
-
- HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
- factory.setReadTimeout(5000);// 单位为ms
- factory.setConnectTimeout(5000);// 单位为ms
- return factory;
} catch (Exception e) {
e.printStackTrace();
}
}
+ try {
+ SSLContext sslContext = sslContextBuilder.build();
+
+ SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
+ sslContext,
+ SSLConnectionSocketFactory.getDefaultHostnameVerifier());
+
+ CloseableHttpClient httpClient = HttpClients.custom()
+ .setSSLSocketFactory(sslsf)
+ .build();
+
+ HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient);
+ factory.setReadTimeout(5000);// 单位为ms
+ factory.setConnectTimeout(5000);// 单位为ms
+ return factory;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setReadTimeout(5000);// 单位为ms
factory.setConnectTimeout(5000);// 单位为ms
@Slf4j
@Component
-public class AuthnAccountRemoteRestTemplate {
+public class AuthnRemoteRestTemplate {
@Autowired
- private RestTemplate authnAccountRestTemplate;
+ private RestTemplate authnRestTemplate;
@Value(value = "${sw-backend-base-api.uri}/v1/authn")
private String url;
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
}
}
- public JSONObject roles(String username) {
+ public JSONObject accountRoles(String username) {
try {
final String path = "/{username}/roles";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
}
}
- public JSONObject applications(String username, String applicationId) {
+ public JSONObject accountApplications(String username, String applicationId) {
try {
final String path = "/{username}/applications";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
}
}
- public JSONObject menus(String username, String applicationId) {
+ public JSONObject accountMenus(String username, String applicationId) {
try {
final String path = "/{username}/menus";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
}
}
- public JSONObject operations(String username, String applicationId) {
+ public JSONObject accountOperations(String username, String applicationId) {
try {
final String path = "/{username}/operations";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
}
}
- public JSONObject resources(String username, String applicationId) {
+ public JSONObject accountResources(String username, String applicationId) {
try {
final String path = "/{username}/resources";
final String url = this.url + StringUtils.replaceEach(path, new String[] {"{username}"}, new String[] {username});
log.debug(url);
- return authnAccountRestTemplate.getForObject(url, JSONObject.class);
+ return authnRestTemplate.getForObject(url, JSONObject.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ return defaultErrorJson(e);
+ }
+ }
+
+ public JSONObject resourceRoleSets() {
+
+ try {
+ final String path = "/resourceRoleSets";
+ final String url = this.url + path;
+ log.debug(url);
+
+ return authnRestTemplate.getForObject(url, JSONObject.class);
+ } catch (Exception e) {
+ e.printStackTrace();
+
+ return defaultErrorJson(e);
+ }
+ }
+
+
+ public JSONObject routes() {
+
+ try {
+ final String path = "/routes";
+ final String url = this.url + path;
+ log.debug(url);
+
+ return authnRestTemplate.getForObject(url, JSONObject.class);
} catch (Exception e) {
e.printStackTrace();
import java.util.List;
+import lombok.extern.slf4j.Slf4j;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONObject;
import com.supwisdom.institute.backend.gateway.authn.model.Account;
-import com.supwisdom.institute.backend.gateway.authn.model.Permission;
+import com.supwisdom.institute.backend.gateway.authn.model.ResourceRoleSet;
import com.supwisdom.institute.backend.gateway.authn.model.Role;
-import com.supwisdom.institute.backend.gateway.authn.remote.web.client.AuthnAccountRemoteRestTemplate;
+import com.supwisdom.institute.backend.gateway.authn.model.Route;
+import com.supwisdom.institute.backend.gateway.authn.remote.web.client.AuthnRemoteRestTemplate;
+@Slf4j
@Service
-public class AuthnAccountService {
-
-// @Autowired
-// private AuthnAccountRemoteFeignClient authnAccountRemote;
+public class AuthnService {
@Autowired
- private AuthnAccountRemoteRestTemplate authnAccountRemote;
+ private AuthnRemoteRestTemplate authnRemote;
public Account account(String username) {
- JSONObject jsonObject = authnAccountRemote.account(username);
+ JSONObject jsonObject = authnRemote.account(username);
if (jsonObject == null) {
return null;
}
+ log.debug("{}", jsonObject.toJSONString());
if (jsonObject.getIntValue("code") == 0) {
JSONObject data = jsonObject.getJSONObject("data");
return null;
}
- public List<Role> roles(String username) {
+ public List<Role> accountRoles(String username) {
- JSONObject jsonObject = authnAccountRemote.roles(username);
+ JSONObject jsonObject = authnRemote.accountRoles(username);
if (jsonObject == null) {
return null;
}
+ log.debug("{}", jsonObject.toJSONString());
if (jsonObject.getIntValue("code") == 0) {
JSONObject data = jsonObject.getJSONObject("data");
return null;
}
- public List<Permission> menus(String username, String applicationId) {
+ public List<ResourceRoleSet> resourceRoleSets() {
+
+ JSONObject jsonObject = authnRemote.resourceRoleSets();
+ if (jsonObject == null) {
+ return null;
+ }
+ log.debug("{}", jsonObject.toJSONString());
+
+ if (jsonObject.getIntValue("code") == 0) {
+ JSONObject data = jsonObject.getJSONObject("data");
+
+ return data.getJSONArray("resourceRoleSets").toJavaList(ResourceRoleSet.class);
+ }
+
+ return null;
+ }
+
+ public List<Route> routes() {
- JSONObject jsonObject = authnAccountRemote.menus(username, applicationId);
+ JSONObject jsonObject = authnRemote.routes();
if (jsonObject == null) {
return null;
}
+ log.debug("{}", jsonObject.toJSONString());
if (jsonObject.getIntValue("code") == 0) {
JSONObject data = jsonObject.getJSONObject("data");
- return data.getJSONArray("permissions").toJavaList(Permission.class);
+ return data.getJSONArray("routes").toJavaList(Route.class);
}
return null;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.gateway.filter.GatewayFilterChain;
import org.springframework.cloud.gateway.filter.GlobalFilter;
import org.springframework.core.Ordered;
import org.springframework.web.server.ServerWebExchange;
import com.supwisdom.infras.security.core.userdetails.InfrasUser;
+import com.supwisdom.institute.backend.gateway.authn.model.ResourceRoleSet;
+import com.supwisdom.institute.backend.gateway.authn.model.Role;
+import com.supwisdom.institute.backend.gateway.authn.service.AuthnService;
import reactor.core.publisher.Mono;
-//import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.GATEWAY_REQUEST_URL_ATTR;
-
@Slf4j
public class AccessControlGlobalFilter implements GlobalFilter, Ordered {
-
+
@Override
public int getOrder() {
return Ordered.HIGHEST_PRECEDENCE;
log.debug("AccessControlGlobalFilter.filter");
// 获取 请求路径 对应的 资源
- Collection<ConfigAttribute> attributes = this.getAttributes(exchange);
- log.debug("request's attributes is {}", attributes);
+ Collection<ConfigAttribute> configAttributes = this.getAttributes(exchange);
+ log.debug("request's attributes is {}", configAttributes);
// 判断 该资源 是否需要登录才能访问
- if (attributes == null) {
+ if (configAttributes == null || configAttributes.size() <= 0) {
return chain.filter(exchange); // FIXME:
}
// 获取 当前登录用户(包括角色信息)
- // 判断 登录用户 是否可以访问 该资源
+ // FIXME: 判断 登录用户 是否可以访问 该资源
return ReactiveSecurityContextHolder.getContext()
.filter(c -> {
boolean hasPermission = false;
- for (ConfigAttribute ca : attributes) {
+ ConfigAttribute ca;
+ String needRole;
+ for (Iterator<ConfigAttribute> iter = configAttributes.iterator(); iter.hasNext();) {
+ ca = iter.next();
+ needRole = ca.getAttribute();
+
+ if (needRole == null || needRole.isEmpty()) {
+ continue;
+ }
+
+ if (needRole.startsWith("ACCESS_")) {
+ String access = needRole.substring("ACCESS_".length()); log.debug("Access is {}", access);
+ if ("anonymous".equals(access)) {
+ hasPermission = false;
+ } else if ("authenticate".equals(access)) {
+ hasPermission = true;
+ } else if ("permitAll".equals(access)) {
+ hasPermission = true;
+ } else if ("denyAll".equals(access)) {
+ hasPermission = false;
+ } else {
+ hasPermission = false;
+ }
+ break;
+ }
+
hasPermission = infrasUser.getRoles().contains(ca.getAttribute());
if (hasPermission) {
log.debug("match attribute is {}", ca.getAttribute());
}
if (!hasPermission) {
- throw new RuntimeException("no permission");
+ throw new RuntimeException("no right");
}
return exchange;
})
.flatMap(ex -> chain.filter(ex));
}
-
+
+ @Autowired
+ private AuthnService authnService;
+
private Map<RequestMatcher, Collection<ConfigAttribute>> requestMap = new ConcurrentHashMap<RequestMatcher, Collection<ConfigAttribute>>();
- @Scheduled(initialDelayString = "${sw-backend-gateway.resource.refresh-delay:10000}", fixedDelayString = "${sw-backend-gateway.resource.refresh-delay:10000}")
+ @Scheduled(
+ initialDelayString = "${sw-backend-gateway.resource.refresh-delay:200}",
+ fixedDelayString = "${sw-backend-gateway.resource.refresh-delay:10000}")
protected void refreshRequestMap() {
log.debug("AccessControlGlobalFilter.refreshRequestMap");
+ requestMap.clear();
loadRequestMap();
}
// 定时刷新 资源 与 可访问角色 的 Map
private void loadRequestMap() {
- requestMap.clear();
-
- AntPathRequestMatcher requestMatcher0 = new AntPathRequestMatcher("/api/**");
- Collection<ConfigAttribute> attributes0 = new ArrayList<ConfigAttribute>();
- attributes0.add(new SecurityConfig("user"));
- requestMap.put(requestMatcher0, attributes0);
-
- // FIXME: 从 后端接口 加载
+
+ if (requestMap.isEmpty()) {
+// AntPathRequestMatcher requestMatcher0 = new AntPathRequestMatcher("/api/**");
+// Collection<ConfigAttribute> attributes0 = new ArrayList<ConfigAttribute>();
+// attributes0.add(new SecurityConfig("user"));
+// requestMap.put(requestMatcher0, attributes0);
+ // 从 后端接口 加载
+ List<ResourceRoleSet> resourceRoleSets = authnService.resourceRoleSets();
+ if (resourceRoleSets != null) {
+ for (ResourceRoleSet resourceRoleSet : resourceRoleSets) {
+ String method = resourceRoleSet.getMethod();
+ String path = resourceRoleSet.getPath();
+ String access = resourceRoleSet.getAccess();
+
+ final RequestMatcher requestMatcher = new AntPathRequestMatcher(path, method);
+
+ Collection<ConfigAttribute> attributes = new ArrayList<ConfigAttribute>();
+
+ if (access != null) {
+ if (access.equals(ResourceRoleSet.ACCESS_ANONYMOUS)) {
+ attributes.add(new SecurityConfig("ACCESS_"+ResourceRoleSet.ACCESS_ANONYMOUS));
+ } else if (access.equals(ResourceRoleSet.ACCESS_AUTHENTICATE)) {
+ attributes.add(new SecurityConfig("ACCESS_"+ResourceRoleSet.ACCESS_AUTHENTICATE));
+ } else if (access.equals(ResourceRoleSet.ACCESS_AUTHORIZE)) {
+ for (Role r : resourceRoleSet.getRoles()) {
+ ConfigAttribute ca = new SecurityConfig(r.getCode());
+ attributes.add(ca);
+ }
+ } else if (access.equals(ResourceRoleSet.ACCESS_PERMIT_ALL)) {
+ attributes.add(new SecurityConfig("ACCESS_"+ResourceRoleSet.ACCESS_PERMIT_ALL));
+ } else if (access.equals(ResourceRoleSet.ACCESS_DENY_ALL)) {
+ attributes.add(new SecurityConfig("ACCESS_"+ResourceRoleSet.ACCESS_DENY_ALL));
+ } else {
+ for (Role r : resourceRoleSet.getRoles()) {
+ ConfigAttribute ca = new SecurityConfig(r.getCode());
+ attributes.add(ca);
+ }
+ }
+ } else {
+ for (Role r : resourceRoleSet.getRoles()) {
+ ConfigAttribute ca = new SecurityConfig(r.getCode());
+ attributes.add(ca);
+ }
+ }
+
+ requestMap.put(requestMatcher, attributes);
+ }
+ }
+
+ }
}
import com.supwisdom.institute.backend.gateway.authn.model.Account;
import com.supwisdom.institute.backend.gateway.authn.model.Role;
-import com.supwisdom.institute.backend.gateway.authn.service.AuthnAccountService;
+import com.supwisdom.institute.backend.gateway.authn.service.AuthnService;
import reactor.core.publisher.Mono;
import lombok.extern.slf4j.Slf4j;
PasswordEncoder passwordEncoder;
@Autowired
- AuthnAccountService authnAccountService;
+ AuthnService authnAccountService;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // TODO:
throw new UsernameNotFoundException(String.format("%s not found", username));
}
- List<Role> roles = authnAccountService.roles(username);
+ List<Role> roles = authnAccountService.accountRoles(username);
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
for (Role role : roles) {
filters:
- RewritePath=/api/system/(?<suffix>.*), /$\{suffix}
- id: biz-api
- uri: http://localhost:8082
+ uri: http://localhost:8083
predicates:
- Path=/api/biz/**
filters:
infras.security.jwt.public-key-pem: |-
-----BEGIN PUBLIC KEY-----
- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDBQw6TmvJ+nOuRaLoHsZJGIBzRg/wbskNv6UevL3/nQioYooptPfdIHVzPiKRVT5+DW5+nqzav3DOxY+HYKjO9nFjYdj0sgvRae6iVpa5Ji1wbDKOvwIDNukgnKbqvFXX2Isfl0RxeN3uEKdjeFGGFdr38I3ADCNKFNxtbmfqvjQIDAQAB
+ MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCgzXhvHLKypr+G+gJgOJNt8Lu8ygFFCU0eO4qJ4j2vDzpGwTOWKmD/u7dwIWKyHR43hUSN+FN4SSy1AmHjEKxz0btm7Cki+0YFw0BE4/mB/0wPD251wOS3w0CLsRTfoov9OaGaXApjVSMM74aIX8D46CbwHioLHdAj0/jlVU6gZQIDAQAB
-----END PUBLIC KEY-----
infras.security.jwt.private-key-pem-pkcs8: |-
-----BEGIN PRIVATE KEY-----
- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMFDDpOa8n6c65FougexkkYgHNGD/BuyQ2/pR68vf+dCKhiiim0990gdXM+IpFVPn4Nbn6erNq/cM7Fj4dgqM72cWNh2PSyC9Fp7qJWlrkmLXBsMo6/AgM26SCcpuq8VdfYix+XRHF43e4Qp2N4UYYV2vfwjcAMI0oU3G1uZ+q+NAgMBAAECgYA7jA7UuhxXmMAYmJ0hO7xnMQPQJouqeP3AYK9+sfMF7WQNHR/r0vj7Vli/dUm1I4hxr+x8fAuomf+ve6gds7sm+v2JHLzEIyPPiogoC7IcBmjJ3yVzW/26cXeOmTiPC/fW2g4BpYxSM8HLDaSkrtqzy8e9ijlzMpHBvvwLikufnQJBAOXaqIPuZ7Vm/JwQHAmX2HV+Qk6GMi/H7mL8X0AaW68w+Iccdbz1hzmMBfdn5NMmx2AOwoBAVivgjt0a1OfksHMCQQDXPtXxwFy4dQ4TbPu8L38P8s/bPo9ib1YkEMp57yBw+IvxB7jnpA9rUYTfZM/HpVP7r9rfVEUylVXXzhz1qx//AkEApWJOTBdW8bQ3YEdLFS/3pJqDNSLjq3OMuBZkpqgQfh6bRAQbRynW8XYpuNk9URye6iPUmRkxp4J86ORseqoWtwJAJb5a/b1hhObhxP5DVkht23oUgLmDoxsq28AmASOxaJ3szCMyhUv7eDIfPp0K4lNXWrcHhkncqHYPS3xVD68mOQJAV4SRDdWpgAbQOUODotohE48RxrabHo0l228CJ/pnm0q7gplPs4iSNJ2eijFuOMXfKkq3z/vxiNSA59FcdoCOHQ==
+ MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAKDNeG8csrKmv4b6AmA4k23wu7zKAUUJTR47ioniPa8POkbBM5YqYP+7t3AhYrIdHjeFRI34U3hJLLUCYeMQrHPRu2bsKSL7RgXDQETj+YH/TA8PbnXA5LfDQIuxFN+ii/05oZpcCmNVIwzvhohfwPjoJvAeKgsd0CPT+OVVTqBlAgMBAAECgYAtNxlyROOKkJCyZ4JbhA0QkOx5PWP2AZOJuLxP4SnvG50LYDAdPXVg82u1P+38n2truTF5qiXuYMUNcMoNixayWEZ074kVTI+FluLO405wwMYHvGPKOJVFIUTsKz+xkg4r48R963D5DZ6ZjoPIjLWvxL1zdrsgi9AOz/skAl0yAQJBANO0yadz1fYinSmYa2O27lgE1DpTvYBXGkY2qG7D/QJv2FwP6pdBy9ejym45UXce4wR1Yrlvh9wsErI4p790XOECQQDCcjti2nbIuZP3Dy5Ej97Y6sIbIEu5MpJW8kBjUzUssxgdE9urA/yWVzT8lmj34he+uWJv6s+e/HBDV5tc0tAFAkBK+q2s4+a0jN/SuovWPhS+Eb/EhKIKEU9Z7MPMrxctxMUBHhX8yi3SyszIKv7CTKskihqUCH86qFVaz5wBv8mhAkBgnQea13ebxnGZmSZhFKciWoq1lbdqPpFtuBJ8B5TtL9N0ZzCHaYSwYoZGVqmzONiZgF1DxIUCtuVE4JumZGzNAkB5B1sUdZfLo4q3jOiX5UQ/a4u17ptemvFPR4OynHkuVkgyAfTIo9SAB8/KIntHMlrgcP03G41ciJrYeP5zv8xm
-----END PRIVATE KEY-----
-
##
# infras.security cas
#
`STATUS` VARCHAR(10) NOT NULL COMMENT '状态(1 启用,0 停用)',
`TYPE_` VARCHAR(10) NOT NULL COMMENT '类型(1 应用,2 菜单,3 操作)',
+ `ICON` VARCHAR(500) COMMENT '菜单图标',
`URL` VARCHAR(500) COMMENT 'URL地址',
`APPLICATION_ID` VARCHAR(100) COMMENT '系统ID',
`METHOD` VARCHAR(100) COMMENT '请求方式(GET、POST、PUT、DELETE 等)',
`PATH` VARCHAR(500) COMMENT '请求地址',
+ `ACCESS` VARCHAR(100) COMMENT '访问规则(匿名访问anonymous、认证访问authenticate、授权访问authorize、允许所有permitAll、拒绝所有denyAll)',
PRIMARY KEY (`ID`),
UNIQUE KEY `UQ_CODE` (`COMPANY_ID`,`CODE`)
Content-type: text/html
Supwisdom Source - institute/sw-backend.git/commitdiff
500 - Internal Server Error
Unknown encoding 'gb18030' at /usr/local/share/gitweb/gitweb.cgi line 1539