Subversion Repositories general

Rev

Rev 951 | Rev 1014 | 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
 
924 dev 18
import ak.hostadmiral.core.CoreResources;
19
import ak.hostadmiral.core.model.User;
20
import ak.hostadmiral.core.model.UserManager;
919 dev 21
 
22
public final class LoginAction
23
	extends Action
24
{
25
	public ActionForward execute(ActionMapping mapping, ActionForm form,
26
			HttpServletRequest request, HttpServletResponse response)
27
		throws Exception
28
	{
29
		DynaActionForm theForm = (DynaActionForm)form;
30
 
31
		User user = UserManager.getInstance().loginUser(
949 dev 32
			(String)theForm.get("login"), (String)theForm.get("password"), request.getRemoteAddr());
919 dev 33
 
34
		if(user == null) {
951 dev 35
			Thread.sleep(1000); // FIXME: make this delay configurable
36
 
919 dev 37
			ActionErrors errors = new ActionErrors();
38
			errors.add(ActionMessages.GLOBAL_MESSAGE,
39
				new ActionError(CoreResources.LOGIN_FAILED));
40
			saveErrors(request, errors);
41
			return mapping.getInputForward();
42
		}
43
	    else {
44
	    	request.getSession().setAttribute("user", user);
950 dev 45
	    	request.getSession().setAttribute(Globals.LOCALE_KEY, user.getLocale());
919 dev 46
 
47
	    	String origin = BackPath.findBackPath(request).getBackwardUrl();
48
	    	if(origin == null || origin.length() <= 0) {
49
				return mapping.findForward("default");
50
			}
51
			else {
52
				response.sendRedirect(origin);
53
				return null;
54
			}
55
		}
56
	}
57
}