/*
* This software is distributed under the terms of the FSF
* Gnu Lesser General Public License (see lgpl.txt).
*
* This program is distributed WITHOUT ANY WARRANTY. See the
* GNU General Public License for more details.
*/
package com.scooterframework.builtin;
import static com.scooterframework.web.controller.ActionControl.*;
import com.scooterframework.admin.EnvConfig;
import com.scooterframework.common.util.Util;
import com.scooterframework.security.LoginHelper;
/**
* AdminSignonController class handles admin signon related requests.
*
* @author (Fei) John Chen
*/
public class AdminSignonController {
static {
filterManagerFor(AdminSignonController.class).declareBeforeFilter("loginRequired", "only", "main");
filterManagerFor(AdminSignonController.class).declareBeforeFilter("validateInput", "only", "authenticate");
}
public String validateInput() {
validators().validatesPresenceOf("username");
validators().validatesPresenceOf("password");
if (validationFailed()) {
flash("error", "Please submit both username and password.");
return redirectTo("/admin/signon/login");
}
return null;
}
/**
* default action
*/
public String index() {
return (LoginHelper.isAdminLoggedIn())?
redirectTo("/admin/signon/main")
//:redirectTo("/admin/signon/login");
:forwardTo(viewPath("/login.jsp"));
}
/**
* main method
*/
public String main() {
return null;
}
/**
* login method
*/
public String login() {
return (LoginHelper.isAdminLoggedIn())?
redirectTo("/admin/signon/main")
:null;
}
/**
* Authenticates login request.
*/
public String authenticate() {
String username = p("username");
String password = p("password");
String sau = EnvConfig.getInstance().getSiteAdminUsername();
String sap = EnvConfig.getInstance().getSiteAdminPassword();
if (sau != null && sap != null &&
sau.equals(username) && sap.equals(Util.md5(password))) {
LoginHelper.cacheLoggedInUserId(username);
LoginHelper.cacheLoggedInPassword(password);
return redirectTo("/admin/signon/main");
}
flash("error", "Please login by using correct username and password for site admin.");
return forwardTo("/admin/signon/login");
}
/**
* logout method
*/
public String logout() {
LoginHelper.userLogout();
return null;
}
/**
* loginRequired method (usually used in beforeFilter)
*/
public String loginRequired() {
if (!LoginHelper.isAdminLoggedIn()) {
flash("error", "You must be logged in to do that.");
return redirectTo("/admin/signon/login");
}
return null;
}
}