33import com .ics .dto .DependencyStatus ;
44import com .ics .dto .HealthCheckResponse ;
55import com .ics .enums .Authority ;
6+ import com .ics .repositories .PermissionRepository ;
7+ import com .ics .repositories .RoleRepository ;
68import lombok .RequiredArgsConstructor ;
79import org .springframework .beans .factory .annotation .Value ;
810import org .springframework .http .HttpStatus ;
911import org .springframework .http .ResponseEntity ;
1012import org .springframework .web .bind .annotation .GetMapping ;
13+ import org .springframework .web .bind .annotation .PostMapping ;
14+ import org .springframework .web .bind .annotation .RequestBody ;
1115import org .springframework .web .bind .annotation .RestController ;
1216import org .springframework .web .client .RestTemplate ;
1317
14- import java .util .Arrays ;
15- import java .util .List ;
16- import java .util .Map ;
18+ import java .util .*;
1719import java .util .stream .Collectors ;
1820
1921@ RestController
@@ -24,6 +26,8 @@ public class MainController {
2426 private List <String > depServers ;
2527
2628 private final RestTemplate restTemplate ;
29+ private final RoleRepository roleRepository ;
30+ private final PermissionRepository permissionRepository ;
2731
2832 @ GetMapping ("/" )
2933 public String home () {
@@ -58,4 +62,24 @@ public ResponseEntity<List<String>> authorities() {
5862 .collect (Collectors .toList ());
5963 return new ResponseEntity <>(authorityNames , HttpStatus .OK );
6064 }
65+
66+ @ PostMapping ("/api/authorities" )
67+ public ResponseEntity <HashMap <UUID ,String >> authorities (@ RequestBody String [] authorities ) {
68+ if (authorities == null ) {
69+ return new ResponseEntity <>(new HashMap <>(), HttpStatus .OK );
70+ }
71+ List <String > roles = Arrays .stream (authorities )
72+ .filter (authority -> authority .contains (".role." ))
73+ .toList ();
74+ List <String > permissions = Arrays .stream (authorities )
75+ .filter (authority -> authority .contains (".perm." ))
76+ .toList ();
77+
78+ HashMap <UUID , String > authorityMap = new HashMap <>();
79+
80+ roleRepository .findByPublicNames (roles ).forEach (role -> authorityMap .put (role .getId (), role .getPublicName ()));
81+ permissionRepository .findByPublicNames (permissions ).forEach (permission -> authorityMap .put (permission .getId (), permission .getPublicName ()));
82+
83+ return new ResponseEntity <>(authorityMap , HttpStatus .OK );
84+ }
6185}
0 commit comments