You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/04/10 15:21:59 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2241] cluster seems to work as expectred

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new ea52ec1  [OPENMEETINGS-2241] cluster seems to work as expectred
ea52ec1 is described below

commit ea52ec1de8165aca320a24645eb34f9e07864c92
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Apr 10 22:21:39 2020 +0700

    [OPENMEETINGS-2241] cluster seems to work as expectred
---
 .../org/apache/openmeetings/web/app/ClientManager.java    |  5 ++++-
 .../java/org/apache/openmeetings/web/app/WebSession.java  | 15 ++++++++++-----
 .../apache/openmeetings/web/pages/auth/SignInPage.java    |  5 +++++
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index fd62743..870d31d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -20,6 +20,7 @@ package org.apache.openmeetings.web.app;
 
 import static org.apache.openmeetings.core.util.WebSocketHelper.sendRoom;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.openmeetings.web.pages.auth.SignInPage.TOKEN_PARAM;
 
 import java.io.Serializable;
 import java.util.ArrayList;
@@ -46,6 +47,7 @@ import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.manager.IClientManager;
 import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.apache.openmeetings.db.util.ws.TextRoomMessage;
+import org.apache.openmeetings.web.pages.auth.SignInPage;
 import org.apache.wicket.request.mapper.parameter.PageParameters;
 import org.apache.wicket.util.collections.ConcurrentHashSet;
 import org.apache.wicket.util.string.StringValue;
@@ -387,7 +389,7 @@ public class ClientManager implements IClientManager {
 		Function<String, String> generator = inGenerator == null ? baseUrl -> {
 			String uuid = UUID.randomUUID().toString();
 			tokens().put(uuid, new InstantToken(getUserId(), r.getId()));
-			return Application.urlForPage(Application.get().getHomePage(), new PageParameters().add("token", uuid), baseUrl);
+			return Application.urlForPage(SignInPage.class, new PageParameters().add(TOKEN_PARAM, uuid), baseUrl);
 		} : inGenerator;
 		Optional<Map.Entry<String, ServerInfo>> existing = onlineServers.entrySet().stream()
 				.filter(e -> e.getValue().getRooms().contains(r.getId()))
@@ -401,6 +403,7 @@ public class ClientManager implements IClientManager {
 	}
 
 	Optional<InstantToken> getToken(StringValue uuid) {
+		log.debug("Cluster:: Checking token {}, full list: {}", uuid, tokens().entrySet());
 		return uuid.isEmpty() ? Optional.empty() : Optional.ofNullable(tokens().remove(uuid.toString()));
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
index b5a2404..0599f31 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
@@ -176,11 +176,6 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 
 	@Override
 	public boolean isSignedIn() {
-		Optional<InstantToken> token = cm.getToken(RequestCycle.get().getRequest().getQueryParameters().getParameterValue("token"));
-		if (token.isPresent()) {
-			signIn(userDao.get(token.get().getUserId()));
-			area = RoomEnterBehavior.getRoomUrlFragment(token.get().getRoomId());
-		}
 		if (userId == null) {
 			IAuthenticationStrategy strategy = getAuthenticationStrategy();
 			// get username and password from persistence store
@@ -270,6 +265,16 @@ public class WebSession extends AbstractAuthenticatedWebSession implements IWebS
 		}
 	}
 
+	public void checkToken(StringValue intoken) {
+		Optional<InstantToken> token = cm.getToken(intoken);
+		if (token.isPresent()) {
+			invalidateNow();
+			signIn(userDao.get(token.get().getUserId()));
+			log.debug("Cluster:: Token for room {} is found, signedIn ? {}", token.get().getRoomId(), userId != null);
+			area = RoomEnterBehavior.getRoomUrlFragment(token.get().getRoomId());
+		}
+	}
+
 	public boolean signIn(String secureHash, boolean markUsed) {
 		SOAPLogin soapLogin = soapDao.get(secureHash);
 		if (soapLogin == null) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
index b31bdff..6ab4e61 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInPage.java
@@ -83,6 +83,7 @@ import de.agilecoders.wicket.core.markup.html.bootstrap.dialog.TextContentModal;
 public class SignInPage extends BaseInitedPage {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(SignInPage.class);
+	public static final String TOKEN_PARAM = "token";
 	private SignInDialog signin;
 	private final Modal<String> kick = new IconTextModal("kick") {
 		private static final long serialVersionUID = 1L;
@@ -146,6 +147,10 @@ public class SignInPage extends BaseInitedPage {
 
 	public SignInPage(PageParameters p) {
 		super();
+		WebSession.get().checkToken(p.get(TOKEN_PARAM));
+		if (WebSession.get().isSignedIn()) {
+			setResponsePage(Application.get().getHomePage());
+		}
 		StringValue oauthid = p.get("oauthid");
 		if (!oauthid.isEmpty()) { // oauth2 login
 			try {