Author: snoopdave
Date: Thu Jul 26 09:55:31 2007
New Revision: 559881

URL: http://svn.apache.org/viewvc?view=rev&rev=559881
Log:
Fix for ROL-1492 "Change users profile and admin permissions feature does not 
work"

Better fix: after user is updated, clear the user from the Acegi cache. This is 
done by RollerContext so we can isolate the Acegi dependency in one class.

Also fixed a couple of missing I18N strings.

Modified:
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java
    
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/ModifyUser.java
    
roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
    roller/trunk/apps/weblogger/web/WEB-INF/security.xml

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java?view=diff&rev=559881&r1=559880&r2=559881
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/core/RollerContext.java
 Thu Jul 26 09:55:31 2007
@@ -26,6 +26,7 @@
 import javax.servlet.ServletContextListener;
 import org.acegisecurity.providers.ProviderManager;
 import org.acegisecurity.providers.dao.DaoAuthenticationProvider;
+import org.acegisecurity.providers.dao.UserCache;
 import org.acegisecurity.providers.encoding.Md5PasswordEncoder;
 import org.acegisecurity.providers.encoding.PasswordEncoder;
 import org.acegisecurity.providers.encoding.ShaPasswordEncoder;
@@ -43,6 +44,7 @@
 import org.apache.roller.planet.business.PlanetProvider;
 import org.apache.roller.planet.business.startup.PlanetStartup;
 import org.apache.roller.weblogger.business.startup.WebloggerStartup;
+import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.ui.core.plugins.UIPluginManager;
 import org.apache.roller.weblogger.ui.core.plugins.UIPluginManagerImpl;
 import org.apache.roller.weblogger.ui.core.security.AutoProvision;
@@ -62,7 +64,7 @@
     private static Log log = LogFactory.getLog(RollerContext.class);
     
     private static ServletContext servletContext = null;
-    
+
     
     public RollerContext() {
         super();
@@ -70,6 +72,25 @@
     
     
     /**
+     * Access to the plugin manager for the UI layer. TODO: we may want 
+     * something similar to the Roller interface for the UI layer if we dont 
+     * want methods like this here in RollerContext.
+     */
+    public static UIPluginManager getUIPluginManager() {
+        return UIPluginManagerImpl.getInstance();
+    }
+    
+    
+    /**
+     * Get the ServletContext.
+     * @return ServletContext
+     */
+    public static ServletContext getServletContext() {
+        return servletContext;
+    } 
+    
+    
+    /**
      * Responds to app-init event and triggers startup procedures.
      */
     public void contextInitialized(ServletContextEvent sce) {
@@ -313,15 +334,20 @@
         */
     }
     
+    
     /**
-     * Get the ServletContext.
-     * @return ServletContext
+     * Flush user from any caches maintained by security system.
      */
-    public static ServletContext getServletContext() {
-        return servletContext;
+    public static void flushAuthenticationUserCache(String userName) {         
                       
+        ApplicationContext ctx = 
+            
WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
+        UserCache userCache = (UserCache)ctx.getBean("userCache");
+        if (userCache != null) {
+            userCache.removeUserFromCache(userName);
+        }
     }
+ 
     
-
     /**
      * Get an instance of AutoProvision, if available in roller.properties
      * @return AutoProvision
@@ -358,15 +384,5 @@
             }
         }        
         return null;        
-    }
-
-    
-    /**
-     * Access to the plugin manager for the UI layer. TODO: we may want 
-     * something similar to the Roller interface for the UI layer if we dont 
-     * want methods like this here in RollerContext.
-     */
-    public static UIPluginManager getUIPluginManager() {
-        return UIPluginManagerImpl.getInstance();
-    }
+    }   
 }

Modified: 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/ModifyUser.java
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/ModifyUser.java?view=diff&rev=559881&r1=559880&r2=559881
==============================================================================
--- 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/ModifyUser.java
 (original)
+++ 
roller/trunk/apps/weblogger/src/java/org/apache/roller/weblogger/ui/struts2/admin/ModifyUser.java
 Thu Jul 26 09:55:31 2007
@@ -25,6 +25,7 @@
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.business.UserManager;
 import org.apache.roller.weblogger.pojos.User;
+import org.apache.roller.weblogger.ui.core.RollerContext;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 
 
@@ -137,19 +138,20 @@
                     getUser().grantRole("admin");
                 }
             
+                
RollerContext.flushAuthenticationUserCache(getUser().getUserName());
+
                 // save the updated profile
                 mgr.saveUser(getUser());
                 WebloggerFactory.getWeblogger().flush();
                 
-                // TODO: i18n
-                addMessage("user updated.");
-                
+                addMessage("userAdmin.userSaved");
+                                
                 return INPUT;
                 
             } catch (WebloggerException ex) {
                 log.error("ERROR in action", ex);
                 // TODO: i18n
-                addError("unexpected error doing profile save");
+                addError("userAdmin.error.unexpectedError");
             }
             
         }
@@ -162,8 +164,7 @@
     private void myValidate() {
         
         if(getUser().getId() == null) {
-            // TODO: i18n
-            addError("user not found");
+            addError("userAdmin.error.userNotFound");
         }
         if (StringUtils.isEmpty(getBean().getEmailAddress())) {
             addError("error.add.user.missingEmailAddress");

Modified: 
roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties?view=diff&rev=559881&r1=559880&r2=559881
==============================================================================
--- 
roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties 
(original)
+++ 
roller/trunk/apps/weblogger/web/WEB-INF/classes/ApplicationResources.properties 
Thu Jul 26 09:55:31 2007
@@ -1565,7 +1565,10 @@
 userAdmin.tip.locale=User''s preferred locale.
 userAdmin.tip.timeZone=User''s preferred timezone.
 
+userAdmin.userSaved=User profile saved
+
 userAdmin.error.userNotFound=Specified user not found
+userAdmin.error.unexpected=Unexpected error
 
 # --------------------------------------------------------------- User register
 

Modified: roller/trunk/apps/weblogger/web/WEB-INF/security.xml
URL: 
http://svn.apache.org/viewvc/roller/trunk/apps/weblogger/web/WEB-INF/security.xml?view=diff&rev=559881&r1=559880&r2=559881
==============================================================================
--- roller/trunk/apps/weblogger/web/WEB-INF/security.xml (original)
+++ roller/trunk/apps/weblogger/web/WEB-INF/security.xml Thu Jul 26 09:55:31 
2007
@@ -125,13 +125,12 @@
          
     <bean id="daoAuthenticationProvider" 
class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
          <property name="userDetailsService" ref="jdbcAuthenticationDao"/>
-         <!-- <property name="userCache" ref="userCache"/> -->
+         <property name="userCache" ref="userCache"/> 
     </bean>
     
     <!-- Read users from Roller API -->
     <bean id="jdbcAuthenticationDao" 
class="org.apache.roller.weblogger.ui.core.security.RollerUserDetailsService"/>
 
-    <!--
     <bean id="userCache" 
class="org.acegisecurity.providers.dao.cache.EhCacheBasedUserCache">
         <property name="cache">
             <bean class="org.springframework.cache.ehcache.EhCacheFactoryBean">
@@ -142,7 +141,6 @@
             </bean>
         </property>
     </bean>
-    -->
    
     <bean id="anonymousAuthenticationProvider" 
class="org.acegisecurity.providers.anonymous.AnonymousAuthenticationProvider">
         <property name="key" value="anonymous"/>


Reply via email to