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; +}