package hirondelle.fish.access.password;
import hirondelle.fish.access.user.User;
import hirondelle.fish.access.user.UserDAO;
import hirondelle.web4j.action.ActionTemplateShowAndApply;
import hirondelle.web4j.action.ResponsePage;
import hirondelle.web4j.config.ConnectionSrc;
import hirondelle.web4j.database.DAOException;
import hirondelle.web4j.database.SqlId;
import hirondelle.web4j.model.ModelCtorException;
import hirondelle.web4j.request.RequestParameter;
import hirondelle.web4j.request.RequestParser;
import hirondelle.web4j.security.SafeText;
public final class ResetPasswordAction extends ActionTemplateShowAndApply {
public ResetPasswordAction(RequestParser aRequestParser){
super(FORWARD, REDIRECT, aRequestParser);
}
public static final SqlId RESET_PASSWORD = new SqlId(ConnectionSrc.ACCESS_CONTROL, "RESET_PASSWORD");
public static final RequestParameter USER_NAME = RequestParameter.withLengthCheck("UserName");
protected void show() throws DAOException {
UserDAO dao = new UserDAO();
addToRequest(ITEMS_FOR_LISTING, dao.list());
}
protected void validateUserInput() {
try {
fUser = User.forNewUserOrPasswordReset(getParam(USER_NAME));
}
catch (ModelCtorException ex){
addError(ex);
}
}
protected void apply() throws DAOException {
PasswordDAO dao = new PasswordDAO();
boolean success = dao.reset(fUser);
if (success){
addMessage("Password for _1_ reset successfully.", fUser.getName());
}
else {
addError("No update occurred. Item likely deleted by another user.");
}
}
private User fUser; private static final ResponsePage FORWARD = new ResponsePage("Password Reset", "ResetPassword.jsp", ResetPasswordAction.class);
private static final ResponsePage REDIRECT = new ResponsePage("ResetPasswordAction.show");
}