1 25 package org.jresearch.gossip.actions.user; 26 27 import java.sql.SQLException ; 28 29 import javax.servlet.http.Cookie ; 30 import javax.servlet.http.HttpServletRequest ; 31 import javax.servlet.http.HttpServletResponse ; 32 import javax.servlet.http.HttpSession ; 33 34 import org.apache.struts.action.ActionForm; 35 import org.apache.struts.action.ActionForward; 36 import org.apache.struts.action.ActionMapping; 37 import org.apache.struts.action.ActionMessage; 38 import org.apache.struts.action.ActionMessages; 39 import org.apache.struts.util.MessageResources; 40 import org.jresearch.gossip.IConst; 41 import org.jresearch.gossip.actions.BaseAction; 42 import org.jresearch.gossip.beans.user.User; 43 import org.jresearch.gossip.configuration.Configurator; 44 import org.jresearch.gossip.dao.UserDAO; 45 import org.jresearch.gossip.exception.SystemException; 46 import org.jresearch.gossip.forms.LogonForm; 47 import org.jresearch.gossip.log.LogLevel; 48 import org.jresearch.gossip.log.avalon.JGossipLog; 49 50 55 public final class LogonAction extends BaseAction { 56 70 public ActionForward process(ActionMapping mapping, ActionForm form, 71 HttpServletRequest request, HttpServletResponse response) 72 throws SystemException { 73 if (IConst.VALUES.FALSE.equals(Configurator.getInstance().get( 74 IConst.CONFIG.ENABLE_FORUM_SIGN_ON))) { 75 return (mapping.findForward(IConst.TOKEN.DENIED)); 76 } 77 78 HttpSession session = request.getSession(); 80 MessageResources messages = getResources(request); 81 LogonForm logonForm = (LogonForm) form; 82 User user = new User(); 83 84 ActionMessages errors = new ActionMessages(); 85 86 String username = logonForm.getUsername(); 87 String password = logonForm.getPassword(); 88 89 UserDAO userDAO = UserDAO.getInstance(); 90 91 try { 92 93 user = userDAO.getUser(username, password); 94 user.setIp(request.getRemoteAddr()); 95 96 if (user.getStatus() == 0) { 97 errors.add(ActionMessages.GLOBAL_MESSAGE, 98 new ActionMessage("forum.LOG_FAIL", 99 new Object [] { response 100 .encodeURL("showFogotPass.do?uid=" 101 + username) })); 102 JGossipLog.audit(LogLevel.WARN, user, messages 103 .getMessage("logs.LOG2") 104 + " \"" + username + "\"", session); 105 } else { 106 session.setAttribute(IConst.SESSION.USER_KEY, user); 107 session.removeAttribute(IConst.SESSION.GROUPS_KEY); 108 log(request, "logs.LOG1"); 109 } 110 } catch (SQLException sqle) { 111 getServlet().log("Connection.process", sqle); 112 throw new SystemException(sqle); 113 } 114 115 if (!errors.isEmpty()) { 117 saveErrors(request, errors); 118 119 return (mapping.getInputForward()); 120 } 121 122 if (IConst.VALUES.TRUE.equals(Configurator.getInstance().get( 123 IConst.CONFIG.ENABLE_AUTO_LOGIN))) { 124 if (user.getSettings().isAutologin()) { 126 Cookie userCookie = new Cookie (IConst.COOKIE.USER_COOKIE, user 127 .getName() 128 + "*" + user.getPassword()); 129 userCookie.setMaxAge(IConst.COOKIE.SECONDS_PER_YEAR); 130 ((HttpServletResponse ) response).addCookie(userCookie); 131 } 132 } 133 134 if (mapping.getAttribute() != null) { 136 if ("request".equals(mapping.getScope())) { 137 request.removeAttribute(mapping.getAttribute()); 138 } else { 139 session.removeAttribute(mapping.getAttribute()); 140 } 141 } 142 143 String redirectUri = logonForm.getRedirectUri(); 145 146 if ((redirectUri != null) && !redirectUri.equals("")) { 147 return (new ActionForward(redirectUri, true)); 148 } 149 150 return (mapping.findForward(IConst.TOKEN.WELCOME)); 151 } 152 } 153 | Popular Tags |