summaryrefslogtreecommitdiff
path: root/microservices/02-api-gateway/src/main/java/com/example/apigateway/security
diff options
context:
space:
mode:
authorKamal Wickramanayake <kamal@inbox.lk>2026-07-03 19:02:36 +0530
committerKamal Wickramanayake <kamal@inbox.lk>2026-07-03 19:02:36 +0530
commitaa122113ade36f02dc8fdbebdf1232b5c4b8742c (patch)
treec345b83db6c769bf5e72a09e3f19d43431961695 /microservices/02-api-gateway/src/main/java/com/example/apigateway/security
parentb221a83ecef1dd7f9583d5107017d24e668205a6 (diff)
Microservice sample projects
Diffstat (limited to 'microservices/02-api-gateway/src/main/java/com/example/apigateway/security')
-rw-r--r--microservices/02-api-gateway/src/main/java/com/example/apigateway/security/controllers/UserRestController.java36
-rw-r--r--microservices/02-api-gateway/src/main/java/com/example/apigateway/security/dto/UserResonseDto.java16
2 files changed, 52 insertions, 0 deletions
diff --git a/microservices/02-api-gateway/src/main/java/com/example/apigateway/security/controllers/UserRestController.java b/microservices/02-api-gateway/src/main/java/com/example/apigateway/security/controllers/UserRestController.java
new file mode 100644
index 0000000..5d6581c
--- /dev/null
+++ b/microservices/02-api-gateway/src/main/java/com/example/apigateway/security/controllers/UserRestController.java
@@ -0,0 +1,36 @@
+package com.example.apigateway.security.controllers;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
+import org.springframework.security.oauth2.core.user.OAuth2User;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import reactor.core.publisher.Mono;
+
+@RestController
+public class UserRestController {
+
+ @GetMapping("/api/security/me")
+ public Mono<Map<String, Object>> getLoggedInUser(@AuthenticationPrincipal OAuth2User principal) {
+ if (principal == null) {
+ return Mono.just(Map.of());
+ }
+
+ // Filter roles starting with "ROLE_"
+ List<String> roles = principal.getAuthorities().stream()
+ .map(grantedAuthority -> grantedAuthority.getAuthority())
+ .filter(authority -> authority.startsWith("ROLE_"))
+ .map(s -> s.substring(5)) // Cut ROLE_ part
+ .collect(Collectors.toList());
+
+ return Mono.just(Map.of(
+ "username", principal.getAttribute("sub"),
+ // "name", principal.getName(),
+ // "email", principal.getEmail(),
+ "roles", roles));
+ }
+}
diff --git a/microservices/02-api-gateway/src/main/java/com/example/apigateway/security/dto/UserResonseDto.java b/microservices/02-api-gateway/src/main/java/com/example/apigateway/security/dto/UserResonseDto.java
new file mode 100644
index 0000000..d553d9a
--- /dev/null
+++ b/microservices/02-api-gateway/src/main/java/com/example/apigateway/security/dto/UserResonseDto.java
@@ -0,0 +1,16 @@
+package com.example.apigateway.security.dto;
+
+import java.util.List;
+
+public class UserResonseDto {
+ private List<String> roles;
+
+ // Getters and Setters
+ public List<String> getRoles() {
+ return roles;
+ }
+
+ public void setRoles(List<String> roles) {
+ this.roles = roles;
+ }
+}