From 95cdb13ec6350bdcd34bfc719b971cbabaf538f1 Mon Sep 17 00:00:00 2001 From: Mahesh Maney R <mahesh-maney@users.noreply.github.com> Date: Wed, 16 Aug 2023 18:00:50 +0530 Subject: [PATCH] add user details api <ManeyMR>. --- .../userManagement/controller/UserController.java | 5 +++++ .../upsmf/userManagement/handler/UserHandler.java | 7 +++++++ .../userManagement/utility/KeycloakUserCreator.java | 10 ++++++++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/tarento/upsmf/userManagement/controller/UserController.java b/src/main/java/com/tarento/upsmf/userManagement/controller/UserController.java index a757fdd..a088fb4 100644 --- a/src/main/java/com/tarento/upsmf/userManagement/controller/UserController.java +++ b/src/main/java/com/tarento/upsmf/userManagement/controller/UserController.java @@ -26,6 +26,11 @@ public class UserController { return userHandler.updateUser(body); } + @PostMapping(value = "/details", consumes = "application/json", produces = "application/json") + public String userDetails(@RequestBody final JsonNode body) throws URISyntaxException, IOException { + return userHandler.userDetails(body); + } + @PostMapping(value = "/list", consumes = "application/json", produces = "application/json") public String listUser(@RequestBody final JsonNode body) throws URISyntaxException, IOException { return userHandler.listUser(body); diff --git a/src/main/java/com/tarento/upsmf/userManagement/handler/UserHandler.java b/src/main/java/com/tarento/upsmf/userManagement/handler/UserHandler.java index 03d1dc7..c9bc599 100644 --- a/src/main/java/com/tarento/upsmf/userManagement/handler/UserHandler.java +++ b/src/main/java/com/tarento/upsmf/userManagement/handler/UserHandler.java @@ -85,6 +85,13 @@ public class UserHandler { return null; } + public String userDetails(final JsonNode body) throws IOException { + JsonNode request = body.get("request"); + String userName = keycloakUserGetter.findUser(request.get("userName").asText()); + return userName; + } + + public String listUser(final JsonNode body) throws URISyntaxException, IOException { logger.info("creating user with payload {} ", body.toPrettyString()); String users = keycloakUserGetter.findUser(null); diff --git a/src/main/java/com/tarento/upsmf/userManagement/utility/KeycloakUserCreator.java b/src/main/java/com/tarento/upsmf/userManagement/utility/KeycloakUserCreator.java index 5f85ab8..67a8835 100644 --- a/src/main/java/com/tarento/upsmf/userManagement/utility/KeycloakUserCreator.java +++ b/src/main/java/com/tarento/upsmf/userManagement/utility/KeycloakUserCreator.java @@ -1,12 +1,15 @@ package com.tarento.upsmf.userManagement.utility; import com.fasterxml.jackson.databind.JsonNode; +import org.apache.http.Header; import org.apache.http.HttpHeaders; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BufferedHeader; +import org.apache.http.util.CharArrayBuffer; import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -17,6 +20,7 @@ import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.io.IOException; +import java.util.UUID; @Component @PropertySource({ "classpath:application.properties" }) @@ -64,7 +68,7 @@ public class KeycloakUserCreator { String password = request.get("password").asText(); String requestBody = "{" + "\"enabled\": true," + - "\"username\": " + "\"" +userName + "\"" + "," + + "\"username\": " + "\"" + UUID.randomUUID().toString() + "\"" + "," + "\"email\": " + "\"" + email + "\"" + "," + "\"firstName\": " + "\"" + firstName + "\"" + "," + "\"lastName\": " + "\"" + lastName + "\"" + "," + @@ -79,7 +83,9 @@ public class KeycloakUserCreator { httpPost.setEntity(entity); HttpResponse response = httpClient.execute(httpPost); - String responseBody = EntityUtils.toString(response.getEntity()); + CharArrayBuffer buffer = ((BufferedHeader) response.getHeaders("Location")[0]).getBuffer(); + String resp = new String(buffer.buffer()); + String responseBody = resp.substring(resp.lastIndexOf("/")+1).trim(); logger.info("ResponseBody {}", responseBody); return responseBody; } -- GitLab