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