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() {