diff --git a/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/AvatarResource.java b/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/AvatarResource.java index c4a7122..e9b49ec 100644 --- a/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/AvatarResource.java +++ b/avatar-realm-resource/src/main/java/org/gcube/keycloak/avatar/AvatarResource.java @@ -7,6 +7,7 @@ import org.jboss.resteasy.annotations.cache.NoCache; import org.jboss.resteasy.reactive.RestForm; import org.jboss.resteasy.reactive.multipart.FileUpload; import org.jboss.resteasy.spi.ResteasyProviderFactory; +import org.keycloak.common.util.Resteasy; import org.keycloak.http.HttpRequest; import org.keycloak.models.KeycloakSession; import org.keycloak.services.cors.Cors; @@ -19,7 +20,6 @@ import jakarta.ws.rs.OPTIONS; import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; -import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.UriBuilder; @@ -43,8 +43,10 @@ public class AvatarResource extends AbstractAvatarResource { } @OPTIONS - public Response handleCorsPreflight(@Context final HttpRequest request) { - logger.info("Received CORS preflight request for ext/user; request is " + request); + public Response handleCorsPreflight() { + logger.info("Received CORS preflight request for ext/user"); + KeycloakSession session = Resteasy.getContextData(KeycloakSession.class); + HttpRequest request = session.getContext().getHttpRequest(); return Cors.add(request, Response.ok()) .preflight() .allowAllOrigins() @@ -56,12 +58,14 @@ public class AvatarResource extends AbstractAvatarResource { @GET @Produces({ "image/png", "image/jpeg", "image/gif" }) - public Response downloadCurrentUserAvatarImage(@Context final HttpRequest request) { + public Response downloadCurrentUserAvatarImage() { if (auth == null) { logger.debug("Unhautorized call to get avatar"); throw new NotAuthorizedException("Bearer"); } logger.debugf("Getting avatar for user %s in realm %s", auth.getUser(), auth.getSession().getRealm()); + KeycloakSession session = Resteasy.getContextData(KeycloakSession.class); + HttpRequest request = session.getContext().getHttpRequest(); return Cors .add(request, Response.fromResponse(fetchAndCreateResponse(auth.getSession().getRealm(), auth.getUser()))) @@ -75,7 +79,7 @@ public class AvatarResource extends AbstractAvatarResource { @POST @NoCache @Consumes(MediaType.MULTIPART_FORM_DATA) - public Response uploadCurrentUserAvatarImage(@RestForm(AVATAR_IMAGE_PARAMETER) FileUpload image, @Context UriInfo uriInfo) { + public Response uploadCurrentUserAvatarImage(@RestForm(AVATAR_IMAGE_PARAMETER) FileUpload image) { if (auth == null) { throw new NotAuthorizedException("Bearer"); } @@ -85,6 +89,8 @@ public class AvatarResource extends AbstractAvatarResource { // } logger.debugf("Uploading new avatar for user %s in realm %s", auth.getUser(), auth.getSession().getRealm()); + KeycloakSession session = Resteasy.getContextData(KeycloakSession.class); + UriInfo uriInfo = session.getContext().getUri(); Response response = null; try { saveUserImage(auth.getSession().getRealm(), auth.getUser(), Files.newInputStream(image.uploadedFile())); diff --git a/avatar-realm-resource/src/main/resources/META-INF/beans.xml b/avatar-realm-resource/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000..e69de29