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 0a238b1..341ca5d 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 @@ -13,6 +13,7 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriInfo; import org.jboss.resteasy.annotations.cache.NoCache; @@ -62,22 +63,25 @@ public class AvatarResource extends AbstractAvatarResource { } logger.debugf("Uploading new avatar for user %s in realm %s", auth.getUser(), auth.getSession().getRealm()); + Response response = null; try { InputStream imageInputStream = input.getFormDataPart(AVATAR_IMAGE_PARAMETER, InputStream.class, null); saveUserImage(auth.getSession().getRealm(), auth.getUser(), imageInputStream); if (uriInfo.getQueryParameters().containsKey("account")) { - return Response.seeOther( - RealmsResource.accountUrl(session.getContext().getUri().getBaseUriBuilder()) - .build(auth.getSession().getRealm().getName())).build(); + UriBuilder uriBuilder = RealmsResource.accountUrl(session.getContext().getUri().getBaseUriBuilder()); + for (String parameterName : uriInfo.getQueryParameters().keySet()) { + uriBuilder.queryParam(parameterName, uriInfo.getQueryParameters().get(parameterName)); + } + response = Response.seeOther(uriBuilder.build(auth.getSession().getRealm().getName())).build(); + } else { + response = Response.ok().build(); } - - return Response.ok().build(); - } catch (Exception ex) { - return Response.serverError().build(); + response = Response.serverError().build(); } + return response; } private boolean isValidStateChecker(MultipartFormDataInput input) {