You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2021/03/09 21:28:36 UTC
[jspwiki] 02/03: JSPWIKI-1147: The button 'Clear user preferences'
doesn't clear user preferences.
This is an automated email from the ASF dual-hosted git repository.
juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git
commit 8fc23a50938aa8afa667a0ef5781e737f9b87fcb
Author: Juan Pablo Santos RodrÃguez <ju...@gmail.com>
AuthorDate: Tue Mar 9 22:27:05 2021 +0100
JSPWIKI-1147: The button 'Clear user preferences' doesn't clear user preferences.
---
.../auth/login/CookieAssertionLoginModule.java | 10 +++------
.../org/apache/wiki/preferences/Preferences.java | 4 +++-
.../main/java/org/apache/wiki/util/HttpUtil.java | 7 +++++++
jspwiki-war/src/main/webapp/UserPreferences.jsp | 24 ++++++++++++++++------
4 files changed, 31 insertions(+), 14 deletions(-)
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/CookieAssertionLoginModule.java b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/CookieAssertionLoginModule.java
index 3b9ffe0..e3a391d 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/auth/login/CookieAssertionLoginModule.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/auth/login/CookieAssertionLoginModule.java
@@ -143,15 +143,11 @@ public class CookieAssertionLoginModule extends AbstractLoginModule {
}
/**
- * Removes the user cookie from the response. This makes the user appear
- * again as an anonymous coward.
+ * Removes the user cookie from the response. This makes the user appear again as an anonymous coward.
*
* @param response The servlet response.
*/
- public static void clearUserCookie(final HttpServletResponse response )
- {
- final Cookie userId = new Cookie( PREFS_COOKIE_NAME, "" );
- userId.setMaxAge( 0 );
- response.addCookie( userId );
+ public static void clearUserCookie( final HttpServletResponse response ) {
+ HttpUtil.clearCookie( response, PREFS_COOKIE_NAME );
}
}
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/preferences/Preferences.java b/jspwiki-main/src/main/java/org/apache/wiki/preferences/Preferences.java
index 114bf12..428278e 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/preferences/Preferences.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/preferences/Preferences.java
@@ -55,6 +55,8 @@ public class Preferences extends HashMap< String,String > {
*/
public static final String SESSIONPREFS = "prefs";
+ public static final String COOKIE_USER_PREFS_NAME = "JSPWikiUserPrefs";
+
private static final Logger log = Logger.getLogger( Preferences.class );
/**
@@ -126,7 +128,7 @@ public class Preferences extends HashMap< String,String > {
* @param prefs The default hashmap of preferences
*/
private static void parseJSONPreferences( final HttpServletRequest request, final Preferences prefs ) {
- final String prefVal = TextUtil.urlDecodeUTF8( HttpUtil.retrieveCookieValue( request, "JSPWikiUserPrefs" ) );
+ final String prefVal = TextUtil.urlDecodeUTF8( HttpUtil.retrieveCookieValue( request, COOKIE_USER_PREFS_NAME ) );
if( prefVal != null ) {
// Convert prefVal JSON to a generic hashmap
@SuppressWarnings( "unchecked" ) final Map< String, String > map = new Gson().fromJson( prefVal, Map.class );
diff --git a/jspwiki-util/src/main/java/org/apache/wiki/util/HttpUtil.java b/jspwiki-util/src/main/java/org/apache/wiki/util/HttpUtil.java
index ec2a3dc..e57bfc3 100644
--- a/jspwiki-util/src/main/java/org/apache/wiki/util/HttpUtil.java
+++ b/jspwiki-util/src/main/java/org/apache/wiki/util/HttpUtil.java
@@ -23,6 +23,7 @@ import org.apache.log4j.Logger;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.text.DateFormat;
@@ -253,4 +254,10 @@ public final class HttpUtil {
return currentOctet == 3;
}
+ public static void clearCookie( final HttpServletResponse response, final String cookieName ) {
+ final Cookie cookie = new Cookie( cookieName, "" );
+ cookie.setMaxAge( 0 );
+ response.addCookie( cookie );
+ }
+
}
diff --git a/jspwiki-war/src/main/webapp/UserPreferences.jsp b/jspwiki-war/src/main/webapp/UserPreferences.jsp
index 615c233..3540a28 100644
--- a/jspwiki-war/src/main/webapp/UserPreferences.jsp
+++ b/jspwiki-war/src/main/webapp/UserPreferences.jsp
@@ -34,6 +34,7 @@
<%@ page import="org.apache.wiki.preferences.Preferences" %>
<%@ page import="org.apache.wiki.ui.EditorManager" %>
<%@ page import="org.apache.wiki.ui.TemplateManager" %>
+<%@ page import="org.apache.wiki.util.HttpUtil" %>
<%@ page import="org.apache.wiki.variables.VariableManager" %>
<%@ page import="org.apache.wiki.workflow.DecisionRequiredException" %>
<%@ page errorPage="/Error.jsp" %>
@@ -112,11 +113,11 @@
return;
}
}
- if( "setAssertedName".equals(request.getParameter("action")) )
+ if( "setAssertedName".equals( request.getParameter( "action" ) ) )
{
- Preferences.reloadPreferences(pageContext);
+ Preferences.reloadPreferences( pageContext );
- String assertedName = request.getParameter("assertedName");
+ String assertedName = request.getParameter( "assertedName" );
CookieAssertionLoginModule.setUserCookie( response, assertedName );
String redirectPage = request.getParameter( "redirect" );
@@ -130,13 +131,24 @@
response.sendRedirect( viewUrl );
return;
}
- if( "clearAssertedName".equals(request.getParameter("action")) )
+ if( "clearAssertedName".equals( request.getParameter( "action" ) ) )
{
+ HttpUtil.clearCookie( response, Preferences.COOKIE_USER_PREFS_NAME );
CookieAssertionLoginModule.clearUserCookie( response );
- response.sendRedirect( wikiContext.getURL(ContextEnum.PAGE_NONE.getRequestContext(),"Logout.jsp") );
+ Preferences.reloadPreferences( pageContext );
+
+ String redirectPage = request.getParameter( "redirect" );
+ if( !wiki.getManager( PageManager.class ).wikiPageExists( redirectPage ) )
+ {
+ redirectPage = wiki.getFrontPage();
+ }
+ String viewUrl = ( "UserPreferences".equals( redirectPage ) ) ? "Wiki.jsp" : wikiContext.getViewURL( redirectPage );
+
+ log.info( "Redirecting user to " + viewUrl );
+ response.sendRedirect( viewUrl );
return;
}
- response.setContentType("text/html; charset="+wiki.getContentEncoding() );
+ response.setContentType( "text/html; charset=" + wiki.getContentEncoding() );
String contentPage = wiki.getManager( TemplateManager.class ).findJSP( pageContext, wikiContext.getTemplate(), "ViewTemplate.jsp" );
%><wiki:Include page="<%=contentPage%>" />