From 6235fe7e6811b6f89ed2d662791cc1d6a04d12e2 Mon Sep 17 00:00:00 2001
From: Pierre Tellier <piair338@gmail.com>
Date: Tue, 18 Feb 2025 12:07:07 +0100
Subject: [PATCH] feat: separated class definition

---
 .../enseirb/myinpulse/utils/KeycloakApi.java  | 77 -------------------
 .../datatypes/RoleRepresentation.java         |  7 ++
 .../datatypes/UserRepresentation.java         |  6 ++
 3 files changed, 13 insertions(+), 77 deletions(-)
 delete mode 100644 MyINPulse-back/src/main/java/enseirb/myinpulse/utils/KeycloakApi.java
 create mode 100644 MyINPulse-back/src/main/java/enseirb/myinpulse/utils/keycloak/datatypes/RoleRepresentation.java
 create mode 100644 MyINPulse-back/src/main/java/enseirb/myinpulse/utils/keycloak/datatypes/UserRepresentation.java

diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/KeycloakApi.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/KeycloakApi.java
deleted file mode 100644
index e91e9e1..0000000
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/KeycloakApi.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package enseirb.myinpulse.utils;
-
-import enseirb.myinpulse.exceptions.UserNotFoundException;
-import org.springframework.web.client.RestClient;
-
-import javax.management.relation.RoleNotFoundException;
-
-import static org.springframework.http.MediaType.APPLICATION_JSON;
-
-public class KeycloakApi {
-
-    static final String keycloakUrl = "http://localhost:7080";
-    static final String realmName = "test";
-
-    /**
-     * Uses Keycloak API to retrieve a role representation of a role by its name
-     * @param roleName name of the role
-     * @param bearer authorization header used by the client to authenticate to keycloak
-     */
-    static public RoleRepresentation getRoleRepresentationByName(String roleName, String bearer) throws RoleNotFoundException {
-        RoleRepresentation[] response = RestClient.builder().baseUrl(keycloakUrl)
-                .defaultHeader("Authorization", bearer)
-                .build()
-                .get()
-                .uri("/admin/realms/{realmName}/roles/{roleName}", realmName, roleName)
-                .retrieve()
-                .body(RoleRepresentation[].class);
-
-        if (response == null || response.length == 0) {
-            throw new RoleNotFoundException("Role not found");
-        }
-        return response[0];
-    }
-
-    static public String getUserIdByName(String username, String bearer) throws UserNotFoundException {
-        UserRepresentation[] response = RestClient.builder().baseUrl(keycloakUrl)
-                .defaultHeader("Authorization", bearer)
-                .build()
-                .get()
-                .uri("/admin/realms/{realmName}/users?username={username}", realmName, username)
-                .retrieve()
-                .body(UserRepresentation[].class);
-
-        if (response == null || response.length == 0) {
-            throw new UserNotFoundException("User not found");
-        }
-        return response[0].id;
-    }
-
-    static public void setRoleToUser(String username, String roleName, String bearer) throws RoleNotFoundException, UserNotFoundException {
-        RoleRepresentation roleRepresentation = getRoleRepresentationByName(roleName, bearer);
-        String userId = getUserIdByName(username, bearer);
-
-
-        RestClient.builder().baseUrl(keycloakUrl)
-                .defaultHeader("Authorization", bearer)
-                .build()
-                .post()
-                .uri("/admin/realms/${realmName}/users/${userId}/role-mappings/realm", realmName, userId)
-                .body(roleRepresentation)
-                .contentType(APPLICATION_JSON)
-                .retrieve();
-    }
-}
-
-
-class RoleRepresentation {
-    public String id;
-    public String name;
-    public String description;
-}
-
-class UserRepresentation {
-    public String id;
-    public String name;
-}
-
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/keycloak/datatypes/RoleRepresentation.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/keycloak/datatypes/RoleRepresentation.java
new file mode 100644
index 0000000..a6252a9
--- /dev/null
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/keycloak/datatypes/RoleRepresentation.java
@@ -0,0 +1,7 @@
+package enseirb.myinpulse.utils.keycloak.datatypes;
+
+public class RoleRepresentation {
+    public String id;
+    public String name;
+    public String description;
+}
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/keycloak/datatypes/UserRepresentation.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/keycloak/datatypes/UserRepresentation.java
new file mode 100644
index 0000000..f2c3522
--- /dev/null
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/utils/keycloak/datatypes/UserRepresentation.java
@@ -0,0 +1,6 @@
+package enseirb.myinpulse.utils.keycloak.datatypes;
+
+public class UserRepresentation {
+    public String id;
+    public String name;
+}