@Override public String getRemoteAddress() { return sessionContext.getRemoteAddress(); }
public HttpUserSession(String uriBase, String contextPath, String remoteHost, String remoteIpAddress, String remoteUser, String remoteViewer, UserPlatform platform) { sessionContext = new SessionContext(ApplicationUtils.generateSessionContextId(), uriBase, contextPath, remoteHost, remoteIpAddress, remoteUser, remoteViewer, platform); }
/** * Gets an attribute value from current session. * * @param name * the attribute name * @return the attribute value * @throws UnifyException * if an error occurs */ protected Object getSessionAttribute(String name) throws UnifyException { return unifyComponentContext.getSessionContext().getAttribute(name); }
private void setRequiredAttributes(SessionContext sessionContext) throws UnifyException { sessionContext.setAttribute(SessionAttributeConstants.UPLCOMPONENT_WRITERS, uplComponentWriterManager.getWriters(sessionContext.getPlatform())); }
@Override public void addUserSession(UserSession userSession) throws UnifyException { SessionContext sessionContext = userSession.getSessionContext(); UserSessionTracking userSessionData = new UserSessionTracking(); userSessionData.setSessionId(sessionContext.getId()); userSessionData.setRemoteHost(sessionContext.getRemoteHost()); userSessionData.setRemoteAddress(sessionContext.getRemoteAddress()); userSessionData.setRemoteUser(sessionContext.getRemoteUser()); userSessionData.setNode(getNodeId()); Date createTime = new Date(); userSessionData.setCreateTime(createTime); userSessionData.setLastAccessTime(createTime); db().create(userSessionData); setRequiredAttributes(sessionContext); userSessions.put(sessionContext.getId(), userSession); }
Controller controller = (Controller) sessionContext.getAttribute(pathParts.getBeanId()); if (controller == null) { synchronized (sessionContext) { controller = (Controller) sessionContext.getAttribute(pathParts.getBeanId()); if (controller == null) { UnifyComponentConfig unifyComponentConfig = Page page = pageManager.createPage(sessionContext.getLocale(), pathParts.getActBeanName()); page.setSessionId(pathParts.getBeanId()); pageController.setPage(page); sessionContext.setAttribute(pathParts.getBeanId(), controller); } else if (ControllerType.REMOTECALL_CONTROLLER.equals(controller.getType())) { sessionContext.setAttribute(pathParts.getActBeanName(), controller);
@Override public void logOut(boolean clearCompleteSession) throws UnifyException { if (clearCompleteSession) { logOut(userSessions.get(getRequestContext().getSessionContext().getId())); } else { getRequestContext().getSessionContext().setUserToken(null); } }
private void logOut(UserSession userSession) throws UnifyException { if (userSession != null) { SessionContext sessionContext = userSession.getSessionContext(); db().updateAll(new UserSessionTrackingQuery().id(sessionContext.getId()), new Update().add("userLoginId", null).add("userName", null)); sessionContext.setUserToken(null); sessionContext.clearAttributes(); setRequiredAttributes(sessionContext); } }
@Override public String getRemoteViewer() { return sessionContext.getRemoteViewer(); }
@Override public APIDiscoveryRemoteCallInfo getRemoteCallInfo(String code) throws UnifyException { RemoteCallInfo rci = this.remoteCallInfos.get(code); if (rci == null) { throw new UnifyException(UnifyWebErrorConstants.APIDISCOVERY_REMOTECALL_CODE_UNKNOWN, code); } return new APIDiscoveryRemoteCallInfo(rci.getCode(), rci.getDescription(), this.getSessionContext().getUriBase() + this.getSessionContext().getContextPath() + rci.getPath(), rci.isRestricted()); }
@Periodic(PeriodicType.SLOWEST) @Transactional(TransactionAttribute.REQUIRES_NEW) public void performUserSessionHouseKeeping(TaskMonitor taskMonitor) throws UnifyException { // Update active session records and remove inactive ones Date workingDt = new Date(); List<String> activeSessionList = new ArrayList<String>(); int expirationInSeconds = getContainerSetting(int.class, UnifyCorePropertyConstants.APPLICATION_SESSION_TIMEOUT, UnifyContainer.DEFAULT_APPLICATION_SESSION_TIMEOUT); expirationInSeconds = expirationInSeconds + expirationInSeconds / 5; Date expiryTime = CalendarUtils.getDateWithOffset(workingDt, -(expirationInSeconds * 1000)); for (UserSession userSession : userSessions.values()) { SessionContext sessionContext = userSession.getSessionContext(); if (expiryTime.before(sessionContext.getLastAccessTime())) { activeSessionList.add(sessionContext.getId()); } else { userSessions.remove(sessionContext.getId()); } } if (!activeSessionList.isEmpty()) { db().updateAll(new UserSessionTrackingQuery().idAmongst(activeSessionList), new Update().add("node", getNodeId()).add("lastAccessTime", workingDt)); } if (grabClusterMasterLock()) { // Delete inactive session db().deleteAll(new UserSessionTrackingQuery().expired(expiryTime)); } }
@Override public String getRemoteHost() { return sessionContext.getRemoteHost(); }
public Locale getLocale() { return this.sessionContext.getLocale(); }
@Override public boolean restore(ResponseWriter writer) throws UnifyException { return internalPools.get(getSessionContext().getPlatform()).returnObject(writer); }
@Override public String getRemoteUser() { return sessionContext.getRemoteUser(); }
public String getContextPath() { return this.sessionContext.getContextPath(); }
@Override public void logIn(UserToken userToken) throws UnifyException { SessionContext sessionContext = getRequestContext().getSessionContext(); // Add user session if not existing if (getUserSession(sessionContext.getId()) == null) { addUserSession(new LocalUserSession(sessionContext)); } // Update user session database record String userLoginId = userToken.getUserLoginId(); String sessionId = sessionContext.getId(); db().updateAll(new UserSessionTrackingQuery().id(sessionId), new Update().add("userLoginId", userLoginId) .add("userLoginId", userToken.getUserLoginId()).add("userName", userToken.getUserName())); if (!userToken.isAllowMultipleLogin()) { List<String> sessionIdList = db().valueList(String.class, "sessionId", new UserSessionTrackingQuery().userLoginId(userLoginId).idNot(sessionId)); if (!sessionIdList.isEmpty()) { // Log other user sessions out db().updateAll(new UserSessionTrackingQuery().idAmongst(sessionIdList), new Update().add("userLoginId", null).add("userLoginId", null).add("userName", null)); forceLogOut(sessionIdList.toArray(new String[sessionIdList.size()])); } } // Update session context sessionContext.setUserToken(userToken); }
@Override public String getRemoteViewer() { return sessionContext.getRemoteViewer(); }
private void writeResponse(ResponseWriter writer, PageController pageController, Result result) throws UnifyException { if (ContentTypeConstants.APPLICATION_JSON.equals(result.getContentType())) { writer.write("{\"jsonResp\":["); boolean appendSym = false; for (PageControllerResponse pageControllerResponse : result.getResponses()) { if (appendSym) { writer.write(','); } else { appendSym = true; } pageControllerResponse.generate(writer, pageController); } writer.write("]"); if (requestContextUtil.isRemoteViewer()) { writer.write(",\"remoteView\":{"); writer.write("\"view\":\"").write(requestContextUtil.getRemoteViewer()).write("\",\"sessionID\":\"") .write(getSessionContext().getId()).write("\"}"); } writer.write("}"); } else { for (PageControllerResponse pageControllerResponse : result.getResponses()) { pageControllerResponse.generate(writer, pageController); } } }