package jnpf.dmsController.permission; import jakarta.validation.Valid; import jnpf.base.ActionResult; import jnpf.dmsEntity.permission.form.PermissionGrantBatchForm; import jnpf.dmsEntity.permission.form.PermissionRevokeForm; import jnpf.dmsEntity.permission.vo.DmsCursorPageVO; import jnpf.dmsEntity.permission.vo.DmsPermissionGrantVO; import jnpf.dmsEntity.permission.vo.DmsPrincipalOptionVO; import jnpf.dmsEntity.permission.vo.DmsPermissionUsageVO; import jnpf.dmsService.DmsPermissionAdminQueryService; import jnpf.dmsService.DmsPermissionGrantService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.UUID; @RestController @RequestMapping @RequiredArgsConstructor public class PermissionGrantController { private final DmsPermissionGrantService grantService; private final DmsPermissionAdminQueryService queryService; @PostMapping("/permission-grants") public ActionResult> grant(@RequestBody @Valid PermissionGrantBatchForm form) { return ActionResult.success(grantService.grant(form)); } @GetMapping("/permission-grants") public ActionResult> grants( @RequestParam(value = "resourceId", required = false) UUID resourceId, @RequestParam(value = "principalType", required = false) String principalType, @RequestParam(value = "principalId", required = false) String principalId, @RequestParam(value = "cursor", required = false) String cursor, @RequestParam(value = "pageSize", required = false) Integer pageSize) { return ActionResult.success(queryService.grants(resourceId, principalType, principalId, cursor, pageSize)); } @GetMapping("/permission-grants/{id}") public ActionResult grant(@PathVariable("id") UUID id) { return ActionResult.success(queryService.grant(id)); } @PostMapping("/permission-grants/revoke") public ActionResult> revoke(@RequestBody @Valid PermissionRevokeForm form) { return ActionResult.success(grantService.revoke(form)); } @GetMapping("/permission-principals/{type}/{id}/grants") public ActionResult> principalGrants( @PathVariable("type") String type, @PathVariable("id") String id, @RequestParam(value = "cursor", required = false) String cursor, @RequestParam(value = "pageSize", required = false) Integer pageSize) { return ActionResult.success(queryService.grants(null, type, id, cursor, pageSize)); } @GetMapping("/permission-grants/{id}/usages") public ActionResult> usages( @PathVariable("id") UUID id, @RequestParam(value = "pageSize", required = false) Integer pageSize) { return ActionResult.success(queryService.usages(id, pageSize)); } @GetMapping("/permission-principals/groups") public ActionResult> permissionGroups( @RequestParam(value = "keyword", required = false) String keyword, @RequestParam(value = "pageSize", required = false) Integer pageSize) { return ActionResult.success(queryService.permissionGroups(keyword, pageSize)); } }