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 {