package io.budgetapp.auth; import io.budgetapp.model.ValidationMessage; import io.dropwizard.auth.UnauthorizedHandler; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.util.Collections; /** * */ public class DefaultUnauthorizedHandler implements UnauthorizedHandler { private static final String CHALLENGE_FORMAT = "%s realm=\"%s\""; private static final ValidationMessage VALIDATION_MESSAGE = new ValidationMessage("error", Collections.singleton("Credentials are required to access this resource")); @Override public Response buildResponse(String prefix, String realm) { return Response.status(Response.Status.UNAUTHORIZED) .header(HttpHeaders.AUTHORIZATION, String.format(CHALLENGE_FORMAT, prefix, realm)) .entity(VALIDATION_MESSAGE) .type(MediaType.APPLICATION_JSON_TYPE) .build(); } }