Browse Source

SONAR-8416 move handling logic out from UnauthorizedException

and to AuthenticationError
tags/6.2.1
Sébastien Lesaint 7 years ago
parent
commit
0c7ce63bfe

+ 18
- 2
server/sonar-server/src/main/java/org/sonar/server/authentication/AuthenticationError.java View File

@@ -19,17 +19,21 @@
*/
package org.sonar.server.authentication;

import com.google.common.base.Charsets;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletResponse;
import org.sonar.api.server.authentication.UnauthorizedException;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;

import static java.lang.String.format;
import static org.sonar.api.server.authentication.UnauthorizedException.UNAUTHORIZED_PATH;
import static java.net.URLEncoder.encode;

public class AuthenticationError {

private static final String UNAUTHORIZED_PATH = "/sessions/unauthorized";
private static final String UNAUTHORIZED_PATH_WITH_MESSAGE = UNAUTHORIZED_PATH + "?message=%s";
private static final Logger LOGGER = Loggers.get(AuthenticationError.class);

private AuthenticationError() {
@@ -47,7 +51,19 @@ public class AuthenticationError {
}

public static void handleUnauthorizedError(UnauthorizedException e, HttpServletResponse response) {
redirectTo(response, e.getPath());
redirectTo(response, getPath(e));
}

private static String getPath(UnauthorizedException e) {
return format(UNAUTHORIZED_PATH_WITH_MESSAGE, encodeMessage(e.getMessage()));
}

private static String encodeMessage(String message) {
try {
return encode(message, Charsets.UTF_8.name());
} catch (UnsupportedEncodingException e) {
throw new IllegalStateException(format("Fail to encode %s", message), e);
}
}

private static void redirectToUnauthorized(HttpServletResponse response) {

+ 0
- 21
sonar-plugin-api/src/main/java/org/sonar/api/server/authentication/UnauthorizedException.java View File

@@ -19,12 +19,6 @@
*/
package org.sonar.api.server.authentication;

import com.google.common.base.Charsets;
import java.io.UnsupportedEncodingException;

import static java.lang.String.format;
import static java.net.URLEncoder.encode;

/**
* This exception should be used when a functional error is generated by an Identity Provider plugin.
* The user will be redirected to an unauthorized page and the exception's message will be displayed in the UI.
@@ -33,9 +27,6 @@ import static java.net.URLEncoder.encode;
*/
public class UnauthorizedException extends RuntimeException {

public static final String UNAUTHORIZED_PATH = "/sessions/unauthorized";
private static final String UNAUTHORIZED_PATH_WITH_MESSAGE = UNAUTHORIZED_PATH + "?message=%s";

public UnauthorizedException(String message) {
super(message);
}
@@ -43,16 +34,4 @@ public class UnauthorizedException extends RuntimeException {
public UnauthorizedException(String message, Throwable cause) {
super(message, cause);
}

public String getPath() {
return format(UNAUTHORIZED_PATH_WITH_MESSAGE, encodeMessage(getMessage()));
}

private static String encodeMessage(String message) {
try {
return encode(message, Charsets.UTF_8.name());
} catch (UnsupportedEncodingException unsupportedException) {
throw new IllegalStateException(format("Fail to encode %s", message), unsupportedException);
}
}
}

Loading…
Cancel
Save