feat: Initial implementation of permission manager SDK - Add core permission management functionality with @RequiresPermission annotation - Implement permission checking aspect with Spring Security integration - Add comprehensive model classes for permissions, roles, and domains - Create integration builder for permission structure setup - Add configuration support for permission manager client - Implement exception handling for access control - Add extensive test coverage with integration tests - Configure Maven build with Spring Boot/Cloud dependencies
This commit is contained in:
@ -0,0 +1,96 @@
|
||||
package de.mummeit.pmg.api;
|
||||
|
||||
import de.mummeit.pmg.api.model.access.request.CheckAccessRequest;
|
||||
import de.mummeit.pmg.api.model.access.request.PermitRequest;
|
||||
import de.mummeit.pmg.api.model.access.request.RevokeScopeAccessRequest;
|
||||
import de.mummeit.pmg.api.model.access.request.RevokeUserAccessRequest;
|
||||
import de.mummeit.pmg.api.model.access.request.SearchPermitRequest;
|
||||
import de.mummeit.pmg.api.model.access.response.PermittedResponse;
|
||||
import de.mummeit.pmg.api.model.integration.Integration;
|
||||
import de.mummeit.pmg.api.model.structure.Domain;
|
||||
import de.mummeit.pmg.api.model.structure.Permission;
|
||||
import de.mummeit.pmg.api.model.structure.Role;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@FeignClient(
|
||||
name = "permission-manager",
|
||||
url = "${permission-manager.url}"
|
||||
)
|
||||
public interface PermissionManagerClient {
|
||||
|
||||
@GetMapping("/health")
|
||||
String getHealthStatus();
|
||||
|
||||
// Access Management
|
||||
@PostMapping("/api/v1/access/check")
|
||||
PermittedResponse checkAccess(@RequestBody CheckAccessRequest request);
|
||||
|
||||
@PostMapping("/api/v1/access/permit")
|
||||
void permitAccess(@RequestBody PermitRequest request);
|
||||
|
||||
@PostMapping("/api/v1/access/permits/search")
|
||||
List<Permission> searchPermits(@RequestBody SearchPermitRequest request);
|
||||
|
||||
@PatchMapping("/api/v1/access/revoke")
|
||||
void revokeAccess(@RequestBody PermitRequest request);
|
||||
|
||||
@PatchMapping("/api/v1/access/revoke/scope")
|
||||
void revokeScopeAccess(@RequestBody RevokeScopeAccessRequest request);
|
||||
|
||||
@PatchMapping("/api/v1/access/revoke/user")
|
||||
void revokeUserAccess(@RequestBody RevokeUserAccessRequest request);
|
||||
|
||||
// Domain Management
|
||||
@PostMapping("/api/v1/domains")
|
||||
Domain createDomain(@RequestBody Domain domain);
|
||||
|
||||
@GetMapping("/api/v1/domains/{domain}")
|
||||
Domain getDomain(@PathVariable("domain") String domain);
|
||||
|
||||
@PutMapping("/api/v1/domains/{domain}")
|
||||
Domain updateDomain(@PathVariable("domain") String domain, @RequestBody Domain domainRequest);
|
||||
|
||||
@DeleteMapping("/api/v1/domains/{domain}")
|
||||
void deleteDomain(@PathVariable("domain") String domain);
|
||||
|
||||
// Permission Management
|
||||
@PostMapping("/api/v1/domains/{domain}/permissions")
|
||||
Permission createPermission(@PathVariable("domain") String domain, @RequestBody Permission permission);
|
||||
|
||||
@GetMapping("/api/v1/domains/{domain}/permissions/{permission}")
|
||||
Permission getPermission(@PathVariable("domain") String domain, @PathVariable("permission") String permission);
|
||||
|
||||
@PutMapping("/api/v1/domains/{domain}/permissions/{permission}")
|
||||
Permission updatePermission(
|
||||
@PathVariable("domain") String domain,
|
||||
@PathVariable("permission") String permission,
|
||||
@RequestBody Permission permissionRequest
|
||||
);
|
||||
|
||||
@DeleteMapping("/api/v1/domains/{domain}/permissions/{permission}")
|
||||
void deletePermission(@PathVariable("domain") String domain, @PathVariable("permission") String permission);
|
||||
|
||||
// Role Management
|
||||
@PostMapping("/api/v1/domains/{domain}/roles")
|
||||
Role createRole(@PathVariable("domain") String domain, @RequestBody Role role);
|
||||
|
||||
@GetMapping("/api/v1/domains/{domain}/roles/{role}")
|
||||
Role getRole(@PathVariable("domain") String domain, @PathVariable("role") String role);
|
||||
|
||||
@PutMapping("/api/v1/domains/{domain}/roles/{role}")
|
||||
Role updateRole(
|
||||
@PathVariable("domain") String domain,
|
||||
@PathVariable("role") String role,
|
||||
@RequestBody Role roleRequest
|
||||
);
|
||||
|
||||
@DeleteMapping("/api/v1/domains/{domain}/roles/{role}")
|
||||
void deleteRole(@PathVariable("domain") String domain, @PathVariable("role") String role);
|
||||
|
||||
// Integration
|
||||
@PostMapping("/api/v1/integration/perform")
|
||||
void performIntegration(List<Integration<?>> integrations);
|
||||
}
|
Reference in New Issue
Block a user