1 20 package org.enhydra.barracuda.examples.ex1; 21 22 import java.io.*; 23 import java.util.*; 24 import java.net.*; 25 import javax.servlet.*; 26 import javax.servlet.http.*; 27 28 import org.w3c.dom.*; 29 import org.w3c.dom.html.*; 30 31 import org.enhydra.barracuda.core.comp.*; 32 import org.enhydra.barracuda.core.event.*; 33 import org.enhydra.barracuda.core.event.helper.*; 34 import org.enhydra.barracuda.core.util.dom.*; 35 import org.enhydra.barracuda.core.util.http.*; 36 import org.apache.log4j.*; 37 import org.enhydra.barracuda.examples.ex1.events.*; 38 import org.enhydra.barracuda.examples.ex1.xmlc.*; 39 40 41 45 public class LoginScreen extends DefaultEventGateway { 46 47 protected static final Logger logger = Logger.getLogger(LoginScreen.class.getName()); 49 50 private ListenerFactory getLoginFactory = new EventForwardingFactory(new RenderLoginScreen()); 52 private ListenerFactory attemptLoginFactory = new DefaultListenerFactory() {public BaseEventListener getInstance() {return new AttemptLoginHandler();} public String getListenerID() {return getID(AttemptLoginHandler.class);}}; 53 private ListenerFactory renderLoginFactory = new DefaultListenerFactory() {public BaseEventListener getInstance() {return new RenderLoginScreenHandler();} public String getListenerID() {return getID(RenderLoginScreenHandler.class);}}; 54 private ListenerFactory renderBadUsernameFactory = new DefaultListenerFactory() {public BaseEventListener getInstance() {return new RenderBadUsernameHandler();} public String getListenerID() {return getID(RenderBadUsernameHandler.class);}}; 55 private ListenerFactory renderBadPasswordFactory = new DefaultListenerFactory() {public BaseEventListener getInstance() {return new RenderBadPasswordHandler();} public String getListenerID() {return getID(RenderBadPasswordHandler.class);}}; 56 private ListenerFactory renderErrorFactory = new DefaultListenerFactory() {public BaseEventListener getInstance() {return new RenderErrorHandler();} public String getListenerID() {return getID(RenderErrorHandler.class);}}; 57 58 private AttemptLogin lnkAttemptLogin; private GetLoginScreen lnkGetLoginScreen; private RenderLoginScreen lnkRenderLoginScreen; private BadUsername lnkBadUsername; private BadPassword lnkBadPassword; private ErrorEvent lnkError; 66 69 public LoginScreen() { 70 specifyLocalEventInterests(getLoginFactory, GetLoginScreen.class); 72 specifyLocalEventInterests(attemptLoginFactory, AttemptLogin.class); 73 specifyLocalEventInterests(renderLoginFactory, RenderLoginScreen.class); 74 specifyLocalEventInterests(renderBadUsernameFactory, BadUsername.class); 75 specifyLocalEventInterests(renderBadPasswordFactory, BadPassword.class); 76 specifyLocalEventInterests(renderErrorFactory, ErrorEvent.class); 77 } 78 79 86 class AttemptLoginHandler extends DefaultBaseEventListener { 87 public void handleControlEvent(ControlEventContext context) throws EventException, ServletException, IOException { 88 BaseEvent event = context.getEvent(); 90 HttpServletRequest req = context.getRequest(); 91 logger.debug("Attempting login..."); 92 93 try { 94 int valid = LoginServices.validateUserPwd(req, true); 96 logger.debug("Validity:"+LoginServices.xrefValidity(valid)); 97 98 if (valid==LoginServices.VALID) { 100 logger.debug("...Redirecting to Main Screen"); 101 throw new ClientSideRedirectException(new GetMainScreen()); 102 } else if (valid==LoginServices.INVALID_USER) { 104 logger.debug("...Invalid User!"); 105 throw new InterruptDispatchException(new BadUsername()); 106 } else if (valid==LoginServices.INVALID_PASSWORD) { 108 logger.debug("...Invalid Password!"); 109 throw new InterruptDispatchException(new BadPassword()); 110 } else { 112 logger.debug("...Unknown Error!"); 113 throw new InterruptDispatchException(new UnknownLoginError()); 114 } 115 } finally { 116 event.setHandled(true); 117 } 118 } 119 } 120 121 122 123 131 class RenderLoginScreenHandler extends BTemplateViewHandler { 132 public Object getTemplateModels() {return new LocalTemplateModel();} 133 public Class getTemplateClass() {return LoginHTML.class;} 134 } 135 136 143 class RenderBadUsernameHandler extends BTemplateViewHandler { 144 public Object getTemplateModels() {return new LocalTemplateModel();} 145 public Class getTemplateClass() {return BadUsernameHTML.class;} 146 } 147 148 155 class RenderBadPasswordHandler extends BTemplateViewHandler { 156 public Object getTemplateModels() {return new LocalTemplateModel();} 157 public Class getTemplateClass() {return BadPasswordHTML.class;} 158 } 159 160 166 class RenderErrorHandler extends BTemplateViewHandler { 167 public Object getTemplateModels() {return new LocalTemplateModel();} 168 public Class getTemplateClass() {return ErrorHTML.class;} 169 } 170 171 177 class LocalTemplateModel extends AbstractTemplateModel { 178 179 public String getName() {return "Ex1_Login";} 181 182 public Object getItem(String key) { 184 ViewContext vc = getViewContext(); 185 if (key.equals("GetLoginLink")) { 186 return new BAction(new GetLoginScreen()); 187 } else if (key.equals("AttemptLoginLink")) { 188 return new BAction(new AttemptLogin()); 189 } else if (key.equals("User")) { 190 HttpSession session = SessionServices.getSession(vc, false); 191 String user = (String ) session.getAttribute(LoginServices.USER); 192 if (user==null) user = ""; 193 return new BInput(null, LoginServices.USER, user); 194 } else if (key.equals("Password")) { 195 HttpSession session = SessionServices.getSession(vc, false); 196 String password = (String ) session.getAttribute(LoginServices.PASSWORD); 197 if (password==null) password = ""; 198 return new BInput(null, LoginServices.PASSWORD, password); 199 } else { 200 return super.getItem(key); 201 } 202 } 203 } 204 } 205 206 | Popular Tags |