mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
restore welcome page on 401
This commit is contained in:
@@ -4,30 +4,46 @@ import org.jboss.resteasy.reactive.RestResponse;
|
|||||||
import org.jboss.resteasy.reactive.RestResponse.Status;
|
import org.jboss.resteasy.reactive.RestResponse.Status;
|
||||||
import org.jboss.resteasy.reactive.server.ServerExceptionMapper;
|
import org.jboss.resteasy.reactive.server.ServerExceptionMapper;
|
||||||
|
|
||||||
|
import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||||
import io.quarkus.security.AuthenticationFailedException;
|
import io.quarkus.security.AuthenticationFailedException;
|
||||||
|
import io.quarkus.security.UnauthorizedException;
|
||||||
import jakarta.annotation.Priority;
|
import jakarta.annotation.Priority;
|
||||||
import jakarta.validation.ValidationException;
|
import jakarta.validation.ValidationException;
|
||||||
import jakarta.ws.rs.ext.Provider;
|
import jakarta.ws.rs.ext.Provider;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Provider
|
@Provider
|
||||||
@Priority(1)
|
@Priority(1)
|
||||||
public class ExceptionMappers {
|
public class ExceptionMappers {
|
||||||
|
|
||||||
// display a message when the user fails to authenticate
|
private final CommaFeedConfiguration config;
|
||||||
|
|
||||||
|
@ServerExceptionMapper(UnauthorizedException.class)
|
||||||
|
public RestResponse<UnauthorizedResponse> unauthorized(UnauthorizedException e) {
|
||||||
|
return RestResponse.status(RestResponse.Status.UNAUTHORIZED,
|
||||||
|
new UnauthorizedResponse(e.getMessage(), config.users().allowRegistrations()));
|
||||||
|
}
|
||||||
|
|
||||||
@ServerExceptionMapper(AuthenticationFailedException.class)
|
@ServerExceptionMapper(AuthenticationFailedException.class)
|
||||||
public RestResponse<AuthenticationExceptionInfo> authenticationFailed(AuthenticationFailedException e) {
|
public RestResponse<AuthenticationFailed> authenticationFailed(AuthenticationFailedException e) {
|
||||||
return RestResponse.status(RestResponse.Status.UNAUTHORIZED, new AuthenticationExceptionInfo(e.getMessage()));
|
return RestResponse.status(RestResponse.Status.UNAUTHORIZED, new AuthenticationFailed(e.getMessage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// display a message for validation errors
|
|
||||||
@ServerExceptionMapper(ValidationException.class)
|
@ServerExceptionMapper(ValidationException.class)
|
||||||
public RestResponse<ValidationExceptionInfo> validationException(ValidationException e) {
|
public RestResponse<ValidationFailed> validationFailed(ValidationException e) {
|
||||||
return RestResponse.status(Status.BAD_REQUEST, new ValidationExceptionInfo(e.getMessage()));
|
return RestResponse.status(Status.BAD_REQUEST, new ValidationFailed(e.getMessage()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public record AuthenticationExceptionInfo(String message) {
|
@RegisterForReflection
|
||||||
|
public record UnauthorizedResponse(String message, boolean allowRegistrations) {
|
||||||
}
|
}
|
||||||
|
|
||||||
public record ValidationExceptionInfo(String message) {
|
@RegisterForReflection
|
||||||
|
public record AuthenticationFailed(String message) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@RegisterForReflection
|
||||||
|
public record ValidationFailed(String message) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import org.apache.hc.core5.http.HttpStatus;
|
|||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import com.commafeed.ExceptionMappers.UnauthorizedResponse;
|
||||||
import com.commafeed.frontend.model.Entries;
|
import com.commafeed.frontend.model.Entries;
|
||||||
import com.commafeed.frontend.model.UserModel;
|
import com.commafeed.frontend.model.UserModel;
|
||||||
import com.commafeed.frontend.model.request.MarkRequest;
|
import com.commafeed.frontend.model.request.MarkRequest;
|
||||||
@@ -24,7 +25,13 @@ class SecurityIT extends BaseIT {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void notLoggedIn() {
|
void notLoggedIn() {
|
||||||
RestAssured.given().get("rest/user/profile").then().statusCode(HttpStatus.SC_UNAUTHORIZED);
|
UnauthorizedResponse info = RestAssured.given()
|
||||||
|
.get("rest/user/profile")
|
||||||
|
.then()
|
||||||
|
.statusCode(HttpStatus.SC_UNAUTHORIZED)
|
||||||
|
.extract()
|
||||||
|
.as(UnauthorizedResponse.class);
|
||||||
|
Assertions.assertTrue(info.allowRegistrations());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user