/* Copyright (c) 2001 - 2007 TOPP - www.openplans.org. All rights reserved.
* This code is licensed under the GPL 2.0 license, availible at the root
* application directory.
*/
/*
* Created on Feb 3, 2004
*
* To change the template for this generated file go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
package org.vfny.geoserver.action;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.vfny.geoserver.form.LoginForm;
import org.vfny.geoserver.global.GeoServer;
import org.vfny.geoserver.global.UserContainer;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* LoginAction purpose.
*
* <p>
* Processes the login of a user to gain access to the GeoServer Configuration.
* Currently the defaults are "admin" for username, "geoserver" for password,
* case insensitive. This value can be changed in the services.xml file,
* found in the WEB-INF directory of a running GeoServer. A page to change
* the log in would be nice, but it's not here yet.
* </p>
*
* @author rgould, Refractions Research, Inc.
* @author $Author: cholmesny $ (last modification)
* @version $Id$
*
* @task TODO: add a page to change the username and password from the ui.
*/
public class LoginAction extends GeoServerAction implements ApplicationContextAware {
ApplicationContext context;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;
String username = loginForm.getUsername();
String password = loginForm.getPassword();
//GlobalConfig global = (GlobalConfig) getServlet().getServletContext()
// .getAttribute(GlobalConfig.CONFIG_KEY);
GeoServer geoserver = getWFS(request).getGeoServer();
if (username.equalsIgnoreCase(geoserver.getAdminUserName())
&& password.equalsIgnoreCase(geoserver.getAdminPassword())) {
UserContainer user = new UserContainer();
user.setUsername(username);
request.getSession().setAttribute(UserContainer.SESSION_KEY, user);
String forward = (String) request.getAttribute("forward");
if (forward == null) {
forward = "welcome";
}
return mapping.findForward(forward);
}
ActionErrors errors = new ActionErrors();
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.login.invalidCombo"));
errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("message.login.hint"));
request.setAttribute(Globals.ERROR_KEY, errors);
return mapping.findForward("login");
}
public void setApplicationContext(ApplicationContext arg0)
throws BeansException {
this.context = arg0;
}
}