/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package controllers.security;
import controllers.Common;
import org.apache.commons.lang.StringUtils;
import com.emc.storageos.security.password.Constants;
import play.data.validation.Validation;
import play.i18n.Messages;
import play.mvc.Controller;
import play.mvc.With;
import util.BourneUtil;
import util.MessagesUtils;
import util.PasswordUtil;
import util.ValidationResponse;
@With(Common.class)
public class ChangePassword extends Controller {
public static void update() {
render();
}
public static void save(PasswordForm passwordForm) {
passwordForm.save();
update();
}
public static void cancel() {
update();
}
public static void validatePasswords(String oldPassword, String password, String fieldName) {
String validation = PasswordUtil.validatePasswordforUpdate(oldPassword, password);
if (StringUtils.isNotBlank(validation)) {
Validation.addError(fieldName, validation);
}
if (Validation.hasErrors()) {
renderJSON(ValidationResponse.collectErrors());
}
else {
renderJSON(ValidationResponse.valid());
}
}
public static String getPasswordValidPromptRule() {
String promptString = PasswordUtil.getPasswordValidPromptRules(Constants.PASSWORD_UPDATE_PROMPT);
return promptString;
}
public static class PasswordForm {
public String oldPassword;
public String newPassword;
public String confirmPassword;
public void save() {
if (StringUtils.isEmpty(oldPassword) || StringUtils.isEmpty(newPassword)
|| StringUtils.isEmpty(confirmPassword)) {
flash.error(MessagesUtils.get("passwordForm.emptyField"));
return;
}
if (!StringUtils.equals(newPassword, confirmPassword)) {
flash.error(MessagesUtils.get("passwordForm.doesNotMatch"));
return;
}
try {
BourneUtil.getSysClient().password().update(oldPassword, newPassword, false);
Security.clearAuthToken();
} catch (Exception e) {
Common.flashException(e);
}
}
}
}