You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2016/11/16 18:29:13 UTC
[3/6] brooklyn-server git commit: logout rest code tidy - behaves
nicer if no user
logout rest code tidy - behaves nicer if no user
previously `curl /v1/logout` would throw 500 server error
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/a7ce5b65
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/a7ce5b65
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/a7ce5b65
Branch: refs/heads/master
Commit: a7ce5b6542533ce49a3eb492d719f6575e2a9837
Parents: 30a2d85
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sun Nov 13 13:34:12 2016 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Sun Nov 13 09:39:52 2016 -0700
----------------------------------------------------------------------
.../brooklyn/rest/resources/LogoutResource.java | 20 ++++++++++++++++----
1 file changed, 16 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/a7ce5b65/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/LogoutResource.java
----------------------------------------------------------------------
diff --git a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/LogoutResource.java b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/LogoutResource.java
index 66ce968..d24b8d3 100644
--- a/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/LogoutResource.java
+++ b/rest/rest-resources/src/main/java/org/apache/brooklyn/rest/resources/LogoutResource.java
@@ -30,23 +30,35 @@ import javax.ws.rs.core.UriInfo;
import org.apache.brooklyn.core.mgmt.entitlement.Entitlements;
import org.apache.brooklyn.core.mgmt.entitlement.WebEntitlementContext;
import org.apache.brooklyn.rest.api.LogoutApi;
+import org.apache.brooklyn.rest.security.jaas.BrooklynLoginModule;
import org.apache.brooklyn.util.exceptions.Exceptions;
+import com.google.common.net.HttpHeaders;
+
public class LogoutResource extends AbstractBrooklynRestResource implements LogoutApi {
+
+ private static final String BASIC_REALM_WEBCONSOLE = "Basic realm=\""+BrooklynLoginModule.DEFAULT_ROLE+"\"";
+
@Context HttpServletRequest req;
@Context UriInfo uri;
@Override
public Response logout() {
WebEntitlementContext ctx = (WebEntitlementContext) Entitlements.getEntitlementContext();
+
+ if (ctx==null) {
+ return Response.status(Status.BAD_REQUEST)
+ .entity("No user logged in")
+ .header(HttpHeaders.WWW_AUTHENTICATE, BASIC_REALM_WEBCONSOLE)
+ .build();
+ }
+
URI dest = uri.getBaseUriBuilder().path(LogoutApi.class).path(LogoutApi.class, "logoutUser").build(ctx.user());
// When execution gets here we don't know whether this is the first fetch of logout() or a subsequent one
// with a re-authenticated user. The only way to tell is compare if user names changed. So redirect to an URL
// which contains the user name.
- return Response.status(Status.TEMPORARY_REDIRECT)
- .header("Location", dest.toASCIIString())
- .build();
+ return Response.temporaryRedirect(dest).build();
}
@Override
@@ -58,7 +70,7 @@ public class LogoutResource extends AbstractBrooklynRestResource implements Logo
doLogout();
return Response.status(Status.UNAUTHORIZED)
- .header("WWW-Authenticate", "Basic realm=\"webconsole\"")
+ .header(HttpHeaders.WWW_AUTHENTICATE, BASIC_REALM_WEBCONSOLE)
.build();
} else {
return Response.temporaryRedirect(uri.getAbsolutePathBuilder().replacePath("/").build()).build();