1 16 package org.apache.cocoon.webapps.authentication.acting; 17 18 import java.util.Map ; 19 20 import org.apache.avalon.framework.parameters.Parameters; 21 import org.apache.avalon.framework.thread.ThreadSafe; 22 import org.apache.cocoon.ProcessingException; 23 import org.apache.cocoon.acting.ServiceableAction; 24 import org.apache.cocoon.environment.Redirector; 25 import org.apache.cocoon.environment.SourceResolver; 26 import org.apache.cocoon.webapps.authentication.AuthenticationManager; 27 import org.apache.cocoon.webapps.authentication.user.UserHandler; 28 import org.apache.excalibur.source.SourceParameters; 29 30 40 public final class LoginAction extends ServiceableAction 41 implements ThreadSafe { 42 43 public Map act(Redirector redirector, 44 SourceResolver resolver, 45 Map objectModel, 46 String source, 47 Parameters par) 48 throws Exception { 49 if (getLogger().isDebugEnabled()) { 50 getLogger().debug("BEGIN act resolver=" + resolver + 51 ", objectModel=" + objectModel + 52 ", source=" + source + 53 ", par=" + par); 54 } 55 56 final String handlerName = par.getParameter("handler", null); 57 if (handlerName == null) { 58 throw new ProcessingException("LoginAction requires at least the handler parameter."); 59 } 60 61 SourceParameters authenticationParameters = new SourceParameters(); 63 String [] keys = par.getNames(); 64 if (keys != null) { 65 for (int i = 0; i < keys.length; i++) { 66 final String key = keys[i]; 67 if (key.startsWith("parameter_")) { 68 authenticationParameters.setParameter(key.substring("parameter_".length()), 69 par.getParameter(key)); 70 } 71 } 72 } 73 74 Map map = null; 75 76 AuthenticationManager authManager = null; 78 try { 79 authManager = (AuthenticationManager) this.manager.lookup(AuthenticationManager.ROLE); 80 UserHandler handler = authManager.login(handlerName, 81 par.getParameter("application", null), 82 authenticationParameters); 83 if (handler != null) { 84 map = handler.getContext().getContextInfo(); 86 } 87 } finally { 88 this.manager.release(authManager); 89 } 90 91 if (getLogger().isDebugEnabled()) { 92 getLogger().debug("END act map=" + map); 93 } 94 95 return map; 96 } 97 } 98 | Popular Tags |