Skip to content

Commit 1bea5e0

Browse files
committed
add endpoint to verif authorities existance
1 parent d9087b7 commit 1bea5e0

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

src/main/java/com/ics/configuration/SecurityConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
6060
// allow all preflight requests
6161
.requestMatchers(HttpMethod.OPTIONS).permitAll()
6262
// allow all public endpoints
63-
.requestMatchers("/","/api/health").permitAll()
63+
.requestMatchers("/","/api/health","/api/authorities").permitAll()
6464
// account creation
6565
.requestMatchers(HttpMethod.POST, "/api/accounts").permitAll()
6666
// email verification

src/main/java/com/ics/controllers/MainController.java

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@
33
import com.ics.dto.DependencyStatus;
44
import com.ics.dto.HealthCheckResponse;
55
import com.ics.enums.Authority;
6+
import com.ics.repositories.PermissionRepository;
7+
import com.ics.repositories.RoleRepository;
68
import lombok.RequiredArgsConstructor;
79
import org.springframework.beans.factory.annotation.Value;
810
import org.springframework.http.HttpStatus;
911
import org.springframework.http.ResponseEntity;
1012
import org.springframework.web.bind.annotation.GetMapping;
13+
import org.springframework.web.bind.annotation.PostMapping;
14+
import org.springframework.web.bind.annotation.RequestBody;
1115
import org.springframework.web.bind.annotation.RestController;
1216
import 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.*;
1719
import 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
}

src/main/java/com/ics/enums/Authority.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ public enum Authority {
4646
VIEW_PERMISSION("ics.perm.view_permission"),
4747
SEARCH_PERMISSIONS("ics.perm.search_permissions"),
4848
CREATE_PERMISSION("ics.perm.create_permission"),
49-
DELETE_PERMISSION("ics.perm.delete_permission");
49+
DELETE_PERMISSION("ics.perm.delete_permission"),
50+
51+
// nigga
52+
NIGGA_MAN("ics.perm.nigga");
5053

5154
private final String authority;
5255

0 commit comments

Comments
 (0)