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 2014/03/28 15:22:27 UTC

svn commit: r1582759 - in /openmeetings: branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/server/ branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/ trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/ trunk/singlewe...

Author: solomax
Date: Fri Mar 28 14:22:26 2014
New Revision: 1582759

URL: http://svn.apache.org/r1582759
Log:
[OPENMEETINGS-960] Room login will not hang after sessiondata time-out

Modified:
    openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
    openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
    openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
    openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java

Modified: openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java?rev=1582759&r1=1582758&r2=1582759&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java (original)
+++ openmeetings/branches/3.0.x/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java Fri Mar 28 14:22:26 2014
@@ -190,8 +190,7 @@ public class SessiondataDao {
 		return null;
 	}
 
-	public Boolean updateUser(String SID, long USER_ID, boolean storePermanent,
-			Long language_id) {
+	public boolean updateUser(String SID, long USER_ID, boolean storePermanent, Long language_id) {
 		try {
 			log.debug("updateUser User: " + USER_ID + " || " + SID);
 			TypedQuery<Sessiondata> query = em.createNamedQuery("getSessionById", Sessiondata.class);
@@ -208,8 +207,7 @@ public class SessiondataDao {
 				log.error("Could not find session to Update");
 				return false;
 			}
-			log.debug("Found session to update: " + sessiondata.getSession_id()
-					+ " userId: " + USER_ID);
+			log.debug("Found session to update: " + sessiondata.getSession_id() + " userId: " + USER_ID);
 
 			sessiondata.setRefresh_time(new Date());
 			sessiondata.setUser_id(USER_ID);
@@ -230,7 +228,7 @@ public class SessiondataDao {
 		} catch (Exception ex2) {
 			log.error("[updateUser]: ", ex2);
 		}
-		return null;
+		return false;
 	}
 
 	public Boolean updateUserOrg(String SID, Long organization_id) {

Modified: openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1582759&r1=1582758&r2=1582759&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/branches/3.0.x/src/web/java/org/apache/openmeetings/web/app/WebSession.java Fri Mar 28 14:22:26 2014
@@ -295,8 +295,26 @@ public class WebSession extends Abstract
 		return getBean(FieldLanguageDao.class).getFieldLanguageById(getLanguage());
 	}
 	
+	public String getValidatedSid() {
+		SessiondataDao sessionDao = getBean(SessiondataDao.class);
+		Long _userId = sessionDao.checkSession(SID);
+		if (_userId == null || userId != _userId) {
+			Sessiondata sessionData = sessionDao.getSessionByHash(SID);
+			if (sessionData == null) {
+				sessionData = sessionDao.startsession();
+			}
+			if (!sessionDao.updateUser(sessionData.getSession_id(), userId, false, languageId)) {
+				//something bad, force user to re-login
+				invalidate();
+			} else {
+				SID = sessionData.getSession_id();
+			}
+		}
+		return SID;
+	}
+	
 	public static String getSid() {
-		return get().SID;
+		return get().getValidatedSid();
 	}
 
 	public static long getUserId() {

Modified: openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java?rev=1582759&r1=1582758&r2=1582759&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java (original)
+++ openmeetings/trunk/singlewebapp/src/db/java/org/apache/openmeetings/db/dao/server/SessiondataDao.java Fri Mar 28 14:22:26 2014
@@ -190,8 +190,7 @@ public class SessiondataDao {
 		return null;
 	}
 
-	public Boolean updateUser(String SID, long USER_ID, boolean storePermanent,
-			Long language_id) {
+	public boolean updateUser(String SID, long USER_ID, boolean storePermanent, Long language_id) {
 		try {
 			log.debug("updateUser User: " + USER_ID + " || " + SID);
 			TypedQuery<Sessiondata> query = em.createNamedQuery("getSessionById", Sessiondata.class);
@@ -208,8 +207,7 @@ public class SessiondataDao {
 				log.error("Could not find session to Update");
 				return false;
 			}
-			log.debug("Found session to update: " + sessiondata.getSession_id()
-					+ " userId: " + USER_ID);
+			log.debug("Found session to update: " + sessiondata.getSession_id() + " userId: " + USER_ID);
 
 			sessiondata.setRefresh_time(new Date());
 			sessiondata.setUser_id(USER_ID);
@@ -230,7 +228,7 @@ public class SessiondataDao {
 		} catch (Exception ex2) {
 			log.error("[updateUser]: ", ex2);
 		}
-		return null;
+		return false;
 	}
 
 	public Boolean updateUserOrg(String SID, Long organization_id) {

Modified: openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java?rev=1582759&r1=1582758&r2=1582759&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/trunk/singlewebapp/src/web/java/org/apache/openmeetings/web/app/WebSession.java Fri Mar 28 14:22:26 2014
@@ -295,8 +295,26 @@ public class WebSession extends Abstract
 		return getBean(FieldLanguageDao.class).getFieldLanguageById(getLanguage());
 	}
 	
+	public String getValidatedSid() {
+		SessiondataDao sessionDao = getBean(SessiondataDao.class);
+		Long _userId = sessionDao.checkSession(SID);
+		if (_userId == null || userId != _userId) {
+			Sessiondata sessionData = sessionDao.getSessionByHash(SID);
+			if (sessionData == null) {
+				sessionData = sessionDao.startsession();
+			}
+			if (!sessionDao.updateUser(sessionData.getSession_id(), userId, false, languageId)) {
+				//something bad, force user to re-login
+				invalidate();
+			} else {
+				SID = sessionData.getSession_id();
+			}
+		}
+		return SID;
+	}
+	
 	public static String getSid() {
-		return get().SID;
+		return get().getValidatedSid();
 	}
 
 	public static long getUserId() {