Alexander Wels has uploaded a new change for review. Change subject: webadmin: refresh REST api session ......................................................................
webadmin: refresh REST api session - Each time a user logs into the web admin create a new REST api session and associated session id. This is to make sure the UI plugins have a REST api session id available. Change-Id: I2d3ab397e49bc6bb4e4884228ed86fe4042f4834 Signed-off-by: Alexander Wels <[email protected]> --- M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java 1 file changed, 26 insertions(+), 19 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/46/27546/1 diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java index 2605af5..7937267 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/plugin/restapi/RestApiSessionManager.java @@ -3,7 +3,6 @@ import java.util.logging.Level; import java.util.logging.Logger; -import org.ovirt.engine.ui.common.system.ClientStorage; import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.communication.StorageCallback; import org.ovirt.engine.ui.frontend.utils.BaseContextPathData; @@ -69,7 +68,6 @@ private static final int SESSION_HEARTBEAT_MS = 1000 * 60; // 1 minute private final EventBus eventBus; - private final ClientStorage clientStorage; private final String restApiBaseUrl; private String sessionTimeout; @@ -77,9 +75,8 @@ private String restApiSessionId; @Inject - public RestApiSessionManager(EventBus eventBus, ClientStorage clientStorage) { + public RestApiSessionManager(EventBus eventBus) { this.eventBus = eventBus; - this.clientStorage = clientStorage; // Note that the slash at the end of the URL is not just a whim. With the trailing slash the browser will only // send authentication headers to URLs ending in api/, otherwise it will send them to URLs ending in /, and // this causes problems in other applications, for example in the reports application. @@ -102,9 +99,11 @@ } } - RequestBuilder createRequest() { + RequestBuilder createRequest(final boolean persistent) { RequestBuilder requestBuilder = new RequestBuilder(RequestBuilder.GET, restApiBaseUrl); - requestBuilder.setHeader("Prefer", "persistent-auth"); //$NON-NLS-1$ //$NON-NLS-2$ + if (persistent) { + requestBuilder.setHeader("Prefer", "persistent-auth"); //$NON-NLS-1$ //$NON-NLS-2$ + } requestBuilder.setHeader("Session-TTL", getSessionTimeout()); //$NON-NLS-1$ return requestBuilder; } @@ -117,7 +116,7 @@ if (sessionId != null) { // The session is still in use - RequestBuilder requestBuilder = createRequest(); + RequestBuilder requestBuilder = createRequest(true); // Note: the browser takes care of sending JSESSIONID cookie for this request automatically sendRequest(requestBuilder, new RestApiCallback() { @@ -138,23 +137,31 @@ /** * Acquires new REST API session using the given credentials. */ - public void acquireSession(String userNameWithDomain, String password) { - RequestBuilder requestBuilder = createRequest(); - requestBuilder.setUser(userNameWithDomain); - requestBuilder.setPassword(password); + public void acquireSession(final String userNameWithDomain, final String password) { + RequestBuilder logoutRequestBuilder = createRequest(false); + logoutRequestBuilder.setUser(userNameWithDomain); + logoutRequestBuilder.setPassword(password); - sendRequest(requestBuilder, new RestApiCallback() { + sendRequest(logoutRequestBuilder, new RestApiCallback() { @Override protected void processResponse(Response response) { - // Obtain session ID from response header, as we're unable to access REST API - // JSESSIONID cookie directly (cookie set for different path than WebAdmin page) - String sessionIdFromHeader = response.getHeader(SESSION_ID_HEADER); + RequestBuilder loginRequestBuilder = createRequest(true); + loginRequestBuilder.setUser(userNameWithDomain); + loginRequestBuilder.setPassword(password); + sendRequest(loginRequestBuilder, new RestApiCallback() { + @Override + protected void processResponse(Response response) { + // Obtain session ID from response header, as we're unable to access REST API + // JSESSIONID cookie directly (cookie set for different path than WebAdmin page) + String sessionIdFromHeader = response.getHeader(SESSION_ID_HEADER); - if (sessionIdFromHeader != null) { - setSessionId(sessionIdFromHeader); - } + if (sessionIdFromHeader != null) { + setSessionId(sessionIdFromHeader); + } - reuseSession(); + reuseSession(); + } + }); } }); } -- To view, visit http://gerrit.ovirt.org/27546 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2d3ab397e49bc6bb4e4884228ed86fe4042f4834 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Alexander Wels <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
