/**
* Copyright 2015 Sean Kavanagh - sean.p.kavanagh6@gmail.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.keybox.manage.action;
import com.keybox.common.util.AuthUtil;
import com.keybox.manage.db.AuthDB;
import com.keybox.manage.db.UserThemeDB;
import com.keybox.manage.model.Auth;
import com.keybox.manage.model.UserSettings;
import com.keybox.manage.util.PasswordUtil;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.interceptor.ServletRequestAware;
import javax.servlet.http.HttpServletRequest;
/**
* Action for user settings
*/
@InterceptorRef("keyboxStack")
public class UserSettingsAction extends ActionSupport implements ServletRequestAware {
public static final String REQUIRED = "Required";
HttpServletRequest servletRequest;
Auth auth;
UserSettings userSettings;
@Action(value = "/admin/userSettings",
results = {
@Result(name = "success", location = "/admin/user_settings.jsp")
}
)
public String userSettings() {
userSettings = UserThemeDB.getTheme(AuthUtil.getUserId(servletRequest.getSession()));
return SUCCESS;
}
@Action(value = "/admin/passwordSubmit",
results = {
@Result(name = "input", location = "/admin/user_settings.jsp"),
@Result(name = "success", location = "/admin/menu.action", type = "redirect")
}
)
public String passwordSubmit() {
String retVal = INPUT;
if (!auth.getPassword().equals(auth.getPasswordConfirm())) {
addActionError("Passwords do not match");
} else if (!PasswordUtil.isValid(auth.getPassword())) {
addActionError(PasswordUtil.PASSWORD_REQ_ERROR_MSG);
} else {
auth.setAuthToken(AuthUtil.getAuthToken(servletRequest.getSession()));
if (AuthDB.updatePassword(auth)) {
retVal = SUCCESS;
} else {
addActionError("Current password is invalid");
}
}
return retVal;
}
@Action(value = "/admin/themeSubmit",
results = {
@Result(name = "success", location = "/admin/menu.action", type = "redirect")
}
)
public String themeSubmit() {
UserThemeDB.saveTheme(AuthUtil.getUserId(servletRequest.getSession()), userSettings);
return SUCCESS;
}
/**
* Validates fields for password submit
*/
public void validatePasswordSubmit() {
if (auth.getPassword() == null ||
auth.getPassword().trim().equals("")) {
addFieldError("auth.password", REQUIRED);
}
if (auth.getPasswordConfirm() == null ||
auth.getPasswordConfirm().trim().equals("")) {
addFieldError("auth.passwordConfirm", REQUIRED);
}
if (auth.getPrevPassword() == null ||
auth.getPrevPassword().trim().equals("")) {
addFieldError("auth.prevPassword", REQUIRED);
}
}
public HttpServletRequest getServletRequest() {
return servletRequest;
}
@Override
public void setServletRequest(HttpServletRequest servletRequest) {
this.servletRequest = servletRequest;
}
public Auth getAuth() {
return auth;
}
public void setAuth(Auth auth) {
this.auth = auth;
}
public UserSettings getUserSettings() {
return userSettings;
}
public void setUserSettings(UserSettings userSettings) {
this.userSettings = userSettings;
}
}