Subversion Repositories general

Rev

Rev 1051 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
924 dev 1
package ak.hostadmiral.core.action;
919 dev 2
 
3
import javax.servlet.http.HttpServletRequest;
4
import javax.servlet.http.HttpServletResponse;
5
 
950 dev 6
import org.apache.struts.Globals;
919 dev 7
import org.apache.struts.action.Action;
8
import org.apache.struts.action.ActionMapping;
9
import org.apache.struts.action.ActionForm;
10
import org.apache.struts.action.DynaActionForm;
11
import org.apache.struts.action.ActionForward;
12
import org.apache.struts.action.ActionMessages;
13
import org.apache.struts.action.ActionErrors;
14
import org.apache.struts.action.ActionError;
15
 
16
import ak.backpath.BackPath;
17
 
1051 dev 18
import ak.hostadmiral.core.resources.CoreResources;
924 dev 19
import ak.hostadmiral.core.model.User;
20
import ak.hostadmiral.core.model.UserManager;
1056 dev 21
import ak.hostadmiral.core.servlet.SessionKeys;
919 dev 22
 
23
public final class LoginAction
24
	extends Action
25
{
26
	public ActionForward execute(ActionMapping mapping, ActionForm form,
27
			HttpServletRequest request, HttpServletResponse response)
28
		throws Exception
29
	{
1014 dev 30
		ActionUtils.prepare(request, response);
919 dev 31
 
1014 dev 32
		if("show".equals(mapping.getParameter())) {
33
			return mapping.findForward("default");
34
		}
35
		else if("submit".equals(mapping.getParameter())) {
36
			DynaActionForm theForm = (DynaActionForm)form;
37
			User user = UserManager.getInstance().loginUser((String)theForm.get("login"),
38
				(String)theForm.get("password"), request.getRemoteAddr());
919 dev 39
 
1014 dev 40
			if(user == null) {
41
				Thread.sleep(1000); // FIXME: make this delay configurable
951 dev 42
 
1014 dev 43
				ActionErrors errors = new ActionErrors();
44
				errors.add(ActionMessages.GLOBAL_MESSAGE,
45
					new ActionError(CoreResources.LOGIN_FAILED));
46
				saveErrors(request, errors);
47
				return mapping.getInputForward();
48
			}
49
		    else {
1056 dev 50
		    	request.getSession().setAttribute(SessionKeys.USER, user);
1014 dev 51
		    	request.getSession().setAttribute(Globals.LOCALE_KEY, user.getLocale());
919 dev 52
 
1014 dev 53
		    	String origin = BackPath.findBackPath(request).getBackwardUrl();
54
		    	if(origin == null || origin.length() <= 0) {
55
					return mapping.findForward("default");
56
				}
57
				else {
58
					response.sendRedirect(origin);
59
					return null;
60
				}
919 dev 61
			}
62
		}
1014 dev 63
		else {
64
			throw new Exception("unknown mapping parameter");
65
		}
919 dev 66
	}
67
}