Skip to content

Commit

Permalink
Make it clear RollerSession is a UI thing.
Browse files Browse the repository at this point in the history
  • Loading branch information
snoopdave committed Jan 20, 2025
1 parent 21e8449 commit cdca9c3
Show file tree
Hide file tree
Showing 17 changed files with 82 additions and 83 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,26 +39,26 @@
/**
* Roller session handles session startup and shutdown.
*/
public class RollerSession implements HttpSessionListener, HttpSessionActivationListener, Serializable {
public class RollerUISession implements HttpSessionListener, HttpSessionActivationListener, Serializable {

private static final long serialVersionUID = 5890132909166913727L;
private static final Log log;

// the id of the user represented by this session
private String userName = null;

private SessionManager sessionManager;
private UISessionManager UISessionManager;

public static final String ROLLER_SESSION = "org.apache.roller.weblogger.rollersession";

static{
WebloggerConfig.init(); // must be called before calls to logging APIs
log = LogFactory.getLog(RollerSession.class);
log = LogFactory.getLog(RollerUISession.class);
}

@Inject
public RollerSession(SessionManager sessionManager, HttpServletRequest request) {
this.sessionManager = sessionManager;
public RollerUISession(UISessionManager UISessionManager, HttpServletRequest request) {
this.UISessionManager = UISessionManager;

// No session exists yet, nothing to do
HttpSession session = request.getSession(false);
Expand All @@ -67,13 +67,13 @@ public RollerSession(SessionManager sessionManager, HttpServletRequest request)
}

// Get or create roller session in HTTP session
RollerSession storedSession = (RollerSession)session.getAttribute(ROLLER_SESSION);
RollerUISession storedSession = (RollerUISession)session.getAttribute(ROLLER_SESSION);
if (storedSession == null) {
session.setAttribute(ROLLER_SESSION, this);
}
// If stored session exists with authenticated user but not in cache, override it
else if (storedSession.getAuthenticatedUser() != null
&& sessionManager.get(storedSession.getAuthenticatedUser().getUserName()) == null) {
&& UISessionManager.get(storedSession.getAuthenticatedUser().getUserName()) == null) {
session.setAttribute(ROLLER_SESSION, this);
}

Expand Down Expand Up @@ -154,6 +154,6 @@ public User getAuthenticatedUser() {
*/
public void setAuthenticatedUser(User authenticatedUser) {
this.userName = authenticatedUser.getUserName();
sessionManager.register(authenticatedUser.getUserName(), this);
UISessionManager.register(authenticatedUser.getUserName(), this);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
import javax.servlet.http.HttpSessionListener;


public class RollerSessionListener implements HttpSessionListener, HttpSessionActivationListener {
private static final Log log = LogFactory.getLog(RollerSessionListener.class);
public class RollerUISessionListener implements HttpSessionListener, HttpSessionActivationListener {
private static final Log log = LogFactory.getLog(RollerUISessionListener.class);

@Override
public void sessionDestroyed(HttpSessionEvent se) {
Expand All @@ -43,7 +43,7 @@ public void sessionWillPassivate(HttpSessionEvent se) {
private void clearSession(HttpSessionEvent se) {
HttpSession session = se.getSession();
try {
session.removeAttribute(RollerSession.ROLLER_SESSION);
session.removeAttribute(RollerUISession.ROLLER_SESSION);
} catch (Exception e) {
log.debug("Exception purging session attributes", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,13 @@
import java.util.HashMap;
import java.util.Map;

public class RollerSessionManager implements SessionManager {
private static final Log log = LogFactory.getLog(RollerSessionManager.class);
public class RollerUISessionManager implements UISessionManager {
private static final Log log = LogFactory.getLog(RollerUISessionManager.class);
private static final String CACHE_ID = "roller.session.cache";

private final Cache sessionCache;

public RollerSessionManager() {
public RollerUISessionManager() {
Map<String, String> cacheProps = new HashMap<>();
cacheProps.put("id", CACHE_ID);
cacheProps.put("size", "1000"); // Default cache size
Expand All @@ -43,7 +43,7 @@ public RollerSessionManager() {
CacheManager.registerHandler(new SessionCacheHandler());
}

public void register(String userName, RollerSession session) {
public void register(String userName, RollerUISession session) {
if (userName != null && session != null) {
try {
this.sessionCache.put(userName, session);
Expand All @@ -54,10 +54,10 @@ public void register(String userName, RollerSession session) {
}
}

public RollerSession get(String userName) {
public RollerUISession get(String userName) {
if (userName != null) {
try {
return (RollerSession) this.sessionCache.get(userName);
return (RollerUISession) this.sessionCache.get(userName);
} catch (Exception e) {
log.error("Failed to retrieve session for user: " + userName, e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@

package org.apache.roller.weblogger.ui.core;

public interface SessionManager {
void register(String userName, RollerSession session);
RollerSession get(String userName);
public interface UISessionManager {
void register(String userName, RollerUISession session);
RollerUISession get(String userName);
void invalidate(String userName);
}

Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.core.RollerUISession;
import org.apache.roller.weblogger.ui.rendering.util.cache.SaltCache;
import org.apache.roller.weblogger.ui.struts2.util.UIBeanFactory;

Expand All @@ -41,11 +41,11 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
throws IOException, ServletException {

HttpServletRequest httpReq = (HttpServletRequest) request;
RollerSession rollerSession = UIBeanFactory.getBean(RollerSession.class, httpReq);
RollerUISession rollerUISession = UIBeanFactory.getBean(RollerUISession.class, httpReq);

if (rollerSession != null) {
String userId = rollerSession.getAuthenticatedUser() != null ?
rollerSession.getAuthenticatedUser().getId() : "";
if (rollerUISession != null) {
String userId = rollerUISession.getAuthenticatedUser() != null ?
rollerUISession.getAuthenticatedUser().getId() : "";
SaltCache saltCache = SaltCache.getInstance();
String salt = RandomStringUtils.random(20, 0, 0, true, true, null, new SecureRandom());
saltCache.put(salt, userId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.ui.rendering.util.cache.SaltCache;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.core.RollerUISession;
import org.apache.roller.weblogger.ui.struts2.util.UIBeanFactory;

/**
Expand All @@ -52,7 +52,7 @@ public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpReq = (HttpServletRequest) request;
RollerSession rollerSession = UIBeanFactory.getBean(RollerSession.class, httpReq);
RollerUISession rollerUISession = UIBeanFactory.getBean(RollerUISession.class, httpReq);

String requestURL = httpReq.getRequestURL().toString();
String queryString = httpReq.getQueryString();
Expand All @@ -61,9 +61,9 @@ public void doFilter(ServletRequest request, ServletResponse response,
}

if ("POST".equals(httpReq.getMethod()) && !isIgnoredURL(requestURL)) {
if (rollerSession != null) {
String userId = rollerSession.getAuthenticatedUser() != null ?
rollerSession.getAuthenticatedUser().getId() : "";
if (rollerUISession != null) {
String userId = rollerUISession.getAuthenticatedUser() != null ?
rollerUISession.getAuthenticatedUser().getId() : "";

String salt = httpReq.getParameter("salt");
SaltCache saltCache = SaltCache.getInstance();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,8 @@
import org.apache.roller.weblogger.pojos.GlobalPermission;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.core.RollerSessionManager;
import org.apache.roller.weblogger.ui.core.SessionManager;
import org.apache.roller.weblogger.ui.core.RollerUISessionManager;
import org.apache.roller.weblogger.ui.core.UISessionManager;
import org.apache.roller.weblogger.ui.struts2.core.Register;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.struts2.interceptor.ServletRequestAware;
Expand Down Expand Up @@ -148,9 +147,9 @@ public String firstSave() {
*/
public String save() {

SessionManager sessionManager;
UISessionManager UISessionManager;
try {
sessionManager = UIBeanFactory.getBean(RollerSessionManager.class, request);
UISessionManager = UIBeanFactory.getBean(RollerUISessionManager.class, request);
} catch (ServletException e) {
log.error("Failed to get RollerSessionManager", e);
throw new RuntimeException("Failed to get RollerSessionManager", e);
Expand Down Expand Up @@ -187,13 +186,13 @@ public String save() {

// invalidate user's session if it's not user executing this action
if (!getAuthenticatedUser().getUserName().equals(user.getUserName())) {
sessionManager.invalidate(user.getUserName());
UISessionManager.invalidate(user.getUserName());
}
}

// if user is disabled and not the same as the user executing this action, then invalidate their session
if (!user.getEnabled() && !getAuthenticatedUser().getUserName().equals(user.getUserName())) {
sessionManager.invalidate(user.getUserName());
UISessionManager.invalidate(user.getUserName());
}

try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.WeblogEntryComment;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.core.RollerUISession;
import org.apache.roller.weblogger.ui.struts2.util.UIBeanFactory;
import org.apache.roller.weblogger.util.Utilities;

Expand All @@ -58,7 +58,7 @@ public void init() throws ServletException {
*/
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RollerSession rollerSession = UIBeanFactory.getBean(RollerSession.class, request);
RollerUISession rollerUISession = UIBeanFactory.getBean(RollerUISession.class, request);

Weblogger roller = WebloggerFactory.getWeblogger();
try {
Expand All @@ -69,7 +69,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
} else {
// need post permission to view comments
Weblog weblog = c.getWeblogEntry().getWebsite();
if (weblog.hasUserPermission(rollerSession.getAuthenticatedUser(), WeblogPermission.POST)) {
if (weblog.hasUserPermission(rollerUISession.getAuthenticatedUser(), WeblogPermission.POST)) {
String content = Utilities.escapeHTML(c.getContent());
content = StringEscapeUtils.escapeEcmaScript(content);
String json = "{ id: \"" + c.getId() + "\"," + "content: \"" + content + "\" }";
Expand All @@ -95,7 +95,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
*/
@Override
public void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
RollerSession rollerSession = UIBeanFactory.getBean(RollerSession.class, request);
RollerUISession rollerUISession = UIBeanFactory.getBean(RollerUISession.class, request);

Weblogger roller = WebloggerFactory.getWeblogger();
try {
Expand All @@ -106,7 +106,7 @@ public void doPut(HttpServletRequest request, HttpServletResponse response) thro
} else {
// need post permission to edit comments
Weblog weblog = c.getWeblogEntry().getWebsite();
if (weblog.hasUserPermission(rollerSession.getAuthenticatedUser(), WeblogPermission.POST)) {
if (weblog.hasUserPermission(rollerUISession.getAuthenticatedUser(), WeblogPermission.POST)) {
String content = Utilities.streamToString(request.getInputStream());
c.setContent(content);
// don't update the posttime when updating the comment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,10 @@
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.core.RollerUISession;
import org.apache.roller.weblogger.ui.core.security.CustomUserRegistry;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.MailUtil;
import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.validation.SkipValidation;

Expand Down Expand Up @@ -237,7 +236,7 @@ public String save() {
// Invalidate session, otherwise new user who was originally
// authenticated via LDAP/SSO will remain logged in but
// without a valid Roller role.
getServletRequest().getSession().removeAttribute(RollerSession.ROLLER_SESSION);
getServletRequest().getSession().removeAttribute(RollerUISession.ROLLER_SESSION);
getServletRequest().getSession().invalidate();

// set a special page title
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.core.RollerUISession;
import org.apache.struts2.StrutsStatics;

import com.opensymphony.xwork2.ActionContext;
Expand All @@ -51,9 +51,9 @@ public String doIntercept(ActionInvocation invocation) throws Exception {
final ActionContext context = invocation.getInvocationContext();
HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);

RollerSession rollerSession;
RollerUISession rollerUISession;
try {
rollerSession = UIBeanFactory.getBean(RollerSession.class, request);
rollerUISession = UIBeanFactory.getBean(RollerUISession.class, request);
} catch (ServletException e) {
log.error("Failed to instantiate RollerSession", e);
throw new RuntimeException("Failed to instantiate RollerSession", e);
Expand All @@ -73,8 +73,8 @@ public String doIntercept(ActionInvocation invocation) throws Exception {

UIAction theAction = (UIAction) action;

if (rollerSession != null) {
theAction.setAuthenticatedUser(rollerSession.getAuthenticatedUser());
if (rollerUISession != null) {
theAction.setAuthenticatedUser(rollerUISession.getAuthenticatedUser());
}

// extract the work weblog and set it
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
import com.opensymphony.xwork2.ObjectFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.core.RollerSessionManager;
import org.apache.roller.weblogger.ui.core.RollerUISession;
import org.apache.roller.weblogger.ui.core.RollerUISessionManager;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
Expand All @@ -33,15 +33,15 @@ public class UIBeanFactory extends ObjectFactory {

@Override
public Object buildBean(Class clazz, Map<String, Object> extraContext) throws Exception {
if (clazz == RollerSession.class) {
if (clazz == RollerUISession.class) {
return createRollerSession(extraContext);
}
return super.buildBean(clazz, extraContext);
}

private RollerSession createRollerSession(Map<String, Object> extraContext) {
private RollerUISession createRollerSession(Map<String, Object> extraContext) {
HttpServletRequest request = (HttpServletRequest) extraContext.get("request");
return new RollerSession(new RollerSessionManager(), request);
return new RollerUISession(new RollerUISessionManager(), request);
}

public static <T> T getBean(Class<T> beanClass) throws ServletException {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/webapp/WEB-INF/web.xml
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@

<!-- Context Listeners -->
<listener>
<listener-class>org.apache.roller.weblogger.ui.core.RollerSessionListener</listener-class>
<listener-class>org.apache.roller.weblogger.ui.core.RollerUISessionListener</listener-class>
</listener>

<listener>
Expand Down
7 changes: 4 additions & 3 deletions app/src/main/webapp/roller-ui/login-redirect.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,18 @@
<%@ page import="org.apache.roller.weblogger.business.*" %>
<%@ page import="org.apache.roller.weblogger.pojos.*" %>
<%@ page import="org.apache.roller.weblogger.ui.struts2.util.UIBeanFactory" %>
<%@ page import="org.apache.roller.weblogger.ui.core.RollerSession" %>
<%@ page import="org.apache.roller.weblogger.ui.core.RollerUISession" %>
<%@ page import="java.util.List" %>
<%@ page import="org.apache.roller.weblogger.WebloggerException" %>
<%@ page import="java.util.Collections" %>
<%@ page import="org.apache.commons.logging.Log" %>
<%@ page import="org.apache.commons.logging.LogFactory" %>
<%@ page import="org.apache.roller.weblogger.ui.core.RollerUISession" %>

<%
Log log = LogFactory.getLog("login-redirect.jsp");
RollerSession rollerSession = UIBeanFactory.getBean(RollerSession.class, request);
User user = rollerSession.getAuthenticatedUser();
RollerUISession rollerUISession = UIBeanFactory.getBean(RollerUISession.class, request);
User user = rollerUISession.getAuthenticatedUser();
List<Weblog> weblogs;
try {
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/webapp/roller-ui/logout-redirect.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,13 @@
directory of this distribution.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ page import="org.apache.roller.weblogger.ui.core.RollerSession" %>
<%@ page import="org.apache.roller.weblogger.ui.core.RollerUISession" %>
<%@ page import="javax.servlet.http.Cookie" %>
<%@ page import="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices" %>
<%@ page import="org.apache.roller.weblogger.ui.core.RollerUISession" %>

<%
request.getSession().removeAttribute(RollerSession.ROLLER_SESSION);
request.getSession().removeAttribute(RollerUISession.ROLLER_SESSION);
request.getSession().invalidate();
// Mimic exactly TokenBasedRememberMeServices.makeCancelCookie()
Expand Down
Loading

0 comments on commit cdca9c3

Please sign in to comment.