1 package org.appfuse.webapp.listener; 2 3 import java.util.HashMap ; 4 import java.util.Iterator ; 5 import java.util.Map ; 6 7 import javax.servlet.ServletContext ; 8 import javax.servlet.ServletContextEvent ; 9 import javax.servlet.ServletContextListener ; 10 11 import org.acegisecurity.providers.AuthenticationProvider; 12 import org.acegisecurity.providers.ProviderManager; 13 import org.acegisecurity.providers.encoding.Md5PasswordEncoder; 14 import org.acegisecurity.providers.rememberme.RememberMeAuthenticationProvider; 15 16 import org.apache.commons.logging.Log; 17 import org.apache.commons.logging.LogFactory; 18 import org.appfuse.Constants; 19 import org.appfuse.service.LookupManager; 20 import org.springframework.beans.factory.NoSuchBeanDefinitionException; 21 import org.springframework.context.ApplicationContext; 22 import org.springframework.web.context.ContextLoaderListener; 23 import org.springframework.web.context.support.WebApplicationContextUtils; 24 25 36 public class StartupListener extends ContextLoaderListener 37 implements ServletContextListener { 38 39 private static final Log log = LogFactory.getLog(StartupListener.class); 40 41 public void contextInitialized(ServletContextEvent event) { 42 if (log.isDebugEnabled()) { 43 log.debug("initializing context..."); 44 } 45 46 super.contextInitialized(event); 49 50 ServletContext context = event.getServletContext(); 51 52 Map config = (HashMap ) context.getAttribute(Constants.CONFIG); 55 56 if (config == null) { 57 config = new HashMap (); 58 } 59 60 if (context.getInitParameter(Constants.CSS_THEME) != null) { 61 config.put(Constants.CSS_THEME, context.getInitParameter(Constants.CSS_THEME)); 62 } 63 64 ApplicationContext ctx = 65 WebApplicationContextUtils.getRequiredWebApplicationContext(context); 66 67 boolean encryptPassword = false; 68 try { 69 ProviderManager provider = (ProviderManager) ctx.getBean("authenticationManager"); 70 for (Iterator it = provider.getProviders().iterator(); it.hasNext();) { 71 AuthenticationProvider p = (AuthenticationProvider) it.next(); 72 if (p instanceof RememberMeAuthenticationProvider) { 73 config.put("rememberMeEnabled", Boolean.TRUE); 74 } 75 } 76 77 if (ctx.containsBean("passwordEncoder")) { 78 encryptPassword = true; 79 config.put(Constants.ENCRYPT_PASSWORD, Boolean.TRUE); 80 String algorithm = "SHA"; 81 if (ctx.getBean("passwordEncoder") instanceof Md5PasswordEncoder) { 82 algorithm = "MD5"; 83 } 84 config.put(Constants.ENC_ALGORITHM, algorithm); 85 } 86 } catch (NoSuchBeanDefinitionException n) { 87 } 89 90 context.setAttribute(Constants.CONFIG, config); 91 92 if (log.isDebugEnabled()) { 94 log.debug("Remember Me Enabled? " + config.get("rememberMeEnabled")); 95 log.debug("Encrypt Passwords? " + encryptPassword); 96 if (encryptPassword) { 97 log.debug("Encryption Algorithm: " + config.get(Constants.ENC_ALGORITHM)); 98 } 99 log.debug("Populating drop-downs..."); 100 } 101 102 setupContext(context); 103 } 104 105 public static void setupContext(ServletContext context) { 106 ApplicationContext ctx = 107 WebApplicationContextUtils.getRequiredWebApplicationContext(context); 108 109 LookupManager mgr = (LookupManager) ctx.getBean("lookupManager"); 110 111 context.setAttribute(Constants.AVAILABLE_ROLES, mgr.getAllRoles()); 113 114 if (log.isDebugEnabled()) { 115 log.debug("Drop-down initialization complete [OK]"); 116 } 117 } 118 } 119 | Popular Tags |