/*
* Provided by CSTI Consulting
* Following GNU LESSER GENERAL PUBLIC LICENSE
* You may obtain more details at
*
* http://www.csticonsulting.com
* Copyright (c) 2006-2010 Consultation CS-TI inc.
*
* 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.salesmanager.central.profile;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.TreeMap;
import javax.servlet.http.HttpSession;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.struts2.json.annotations.JSON;
import org.hibernate.exception.ConstraintViolationException;
import com.salesmanager.central.AuthorizationException;
import com.salesmanager.central.CountrySelectBaseAction;
import com.salesmanager.core.constants.Constants;
import com.salesmanager.core.constants.SecurityConstants;
import com.salesmanager.core.entity.customer.Customer;
import com.salesmanager.core.entity.merchant.IMerchant;
import com.salesmanager.core.entity.merchant.MerchantStore;
import com.salesmanager.core.entity.merchant.MerchantUserInformation;
import com.salesmanager.core.entity.merchant.MerchantUserRole;
import com.salesmanager.core.entity.merchant.MerchantUserRoleDef;
import com.salesmanager.core.entity.reference.Country;
import com.salesmanager.core.module.model.application.PasswordGeneratorModule;
import com.salesmanager.core.module.model.application.SecurityQuestionsModule;
import com.salesmanager.core.service.ServiceException;
import com.salesmanager.core.service.ServiceFactory;
import com.salesmanager.core.service.cache.RefCache;
import com.salesmanager.core.service.common.CommonService;
import com.salesmanager.core.service.merchant.MerchantService;
import com.salesmanager.core.util.EncryptionUtil;
import com.salesmanager.core.util.FileUtil;
import com.salesmanager.core.util.LabelUtil;
import com.salesmanager.core.util.LanguageUtil;
import com.salesmanager.core.util.LocaleUtil;
import com.salesmanager.core.util.LogMerchantUtil;
import com.salesmanager.core.util.MessageUtil;
import com.salesmanager.core.util.PropertiesUtil;
import com.salesmanager.core.util.ReferenceUtil;
import com.salesmanager.core.util.SpringUtil;
/**
* Manage User Profile
*
* @author Carl Samson
*
*/
public class ProfileAction extends CountrySelectBaseAction {
private Logger log = Logger.getLogger(ProfileAction.class);
private MerchantUserInformation merchantProfile;
private Integer countryCode;
private String ccMonth;
private String ccYear;
private String securityCode;
private String newPassword;
private String repeatNewPassword;
//when submiting reset password
private String merchantId;
private String adminName;
private boolean resetPasswordResponse;
private Map securityQuestions = new HashMap();
private List<Integer> answers = new ArrayList<Integer>();
private List<String> answersText = new ArrayList<String>();
private List<String> questionsText = new ArrayList<String>();
private boolean passwordResetSuccess = false;
private String merchantPassword = "";
Collection<MerchantUserInformation> merchantUserInformations;
//security
private Map<String,String> roles = new TreeMap();
private Map<String,String> masterRoles = new TreeMap();
private Collection<String> userRoles = new ArrayList();
private String submitMasterRole = null;
private List<String> submitRoles = new ArrayList();
public String resetPassword() {
try {
int merchantId = Integer.parseInt(this.getMerchantId());
//log attempt
LogMerchantUtil.log(merchantId, "Attempt to change password for user name " + this.getAdminName());
//validate merchant id admin
MerchantService mservice = (MerchantService)ServiceFactory.getService(ServiceFactory.MerchantService);
MerchantUserInformation merchantUserInformation = mservice.getMerchantUserInformation(this.getAdminName());
MerchantStore store = mservice.getMerchantStore(merchantId);
if(merchantUserInformation!=null) {
if(merchantUserInformation.getMerchantId()!=merchantId) {
LogMerchantUtil.log(merchantId, "Attempt to change password for user name " + this.getAdminName() + " and inputed wrong merchantId " + merchantId);
}
}
//create email link
Configuration config = PropertiesUtil.getConfiguration();
String l = config.getString("core.system.defaultlanguage", "en");
if (!StringUtils.isBlank(merchantUserInformation.getUserlang())) {
l = merchantUserInformation.getUserlang();
}
LabelUtil lhelper = LabelUtil.getInstance();
lhelper.setLocale(super.getLocale());
String subject = lhelper.getText(l, "label.admin.resetpassword.subject");
String message = lhelper.getText(l, "label.admin.resetpassword");
String centralUri = ReferenceUtil.buildCentralUri(store);
String link = FileUtil.getAdminPasswordResetUrl(merchantUserInformation,store);
String url = "<a href=\""
+ link
+ "\">"
+ link
+ "</a>";
Map emailctx = new HashMap();
emailctx.put("EMAIL_PASSWORD_TEXT", message);
emailctx.put("EMAIL_PASSWORD_LINK", url);
CommonService cservice = new CommonService();
cservice.sendHtmlEmail(merchantUserInformation.getAdminEmail(), subject,
store, emailctx,
"email_template_user_password_link.ftl",merchantUserInformation.getAdminEmail());
//send email
} catch (Exception e) {
log.error(e);
resetPasswordResponse = false;
return SUCCESS;
}
resetPasswordResponse = true;
return SUCCESS;
}
public String displayResetPassword() {
try {
super.setPageTitle("security.question.title");
//parse tokens
String fileId = getServletRequest().getParameter("urlId");
String lang = getServletRequest().getParameter("lang");
Locale l = LocaleUtil.getDefaultLocale();
try {
l = new Locale(Constants.CA_ISOCODE,lang);
} catch (Exception e) {
log.warn("Wrong locale language " + lang);
}
super.setLocale(l);
if (StringUtils.isBlank(fileId)) {
List msg = new ArrayList();
msg.add(getText("error.invalid.url"));
super.setActionErrors(msg);
return "ANONYMOUSGENERICERROR";
}
Map fileInfo = FileUtil.getUrlTokens(fileId);
String id = (String) fileInfo.get("ID");
String date = (String) fileInfo.get("DATE");
if(StringUtils.isBlank(id) || StringUtils.isBlank(date)) {
List msg = new ArrayList();
msg.add(getText("error.invalid.url"));
super.setActionErrors(msg);
return "ANONYMOUSGENERICERROR";
}
MerchantService mservice = (MerchantService)ServiceFactory.getService(ServiceFactory.MerchantService);
MerchantUserInformation merchantUserInformation = mservice.getMerchantUserInformation(new Long(id));
this.setMerchantProfile(merchantUserInformation);
if(merchantUserInformation==null) {
log.error("merchantUserInformation " + id + " is null");
List msg = new ArrayList();
msg.add(getText("error.invalid.url"));
super.setActionErrors(msg);
return "ANONYMOUSGENERICERROR";
}
//display security questions
SecurityQuestionsModule module = (SecurityQuestionsModule)SpringUtil.getBean("securityQuestions");
Map questions = module.getSecurityQuestions(super.getLocale());
this.setSecurityQuestions(questions);
questionsText.add(0, module.getQuestionText(1,super.getLocale()));
questionsText.add(1, module.getQuestionText(2,super.getLocale()));
questionsText.add(2, module.getQuestionText(3,super.getLocale()));
//set merchantUserId in http session
HttpSession session = super.getServletRequest().getSession(true);
session.setAttribute("merchantUserId", merchantUserInformation.getMerchantUserId());
} catch (Exception e) {
log.error(e);
super.setTechnicalMessage();
return "ANONYMOUSGENERICERROR";
}
return SUCCESS;
}
public String saveSecurityQuestions() {
if(this.getMerchantProfile()==null) {
log.error("MerchantUserId not submited");
super.setTechnicalMessage();
return INPUT;
}
try {
//this will submit the questions and the answers
MerchantService mservice = (MerchantService)ServiceFactory.getService(ServiceFactory.MerchantService);
MerchantUserInformation merchantUserInformation = mservice.getMerchantUserInformation(this.getMerchantProfile().getMerchantUserId());
if(merchantUserInformation==null) {
log.error("MerchantUserInformation is null");
super.setTechnicalMessage();
return INPUT;
}
int i = 0;
for(int j = 0; j < answers.size(); j++) {
Integer questionId = answers.get(j);
String answer = answersText.get(j);
//only 3 are stored in merchant user
if(i==0) {
merchantUserInformation.setSecurityQuestion1(String.valueOf(questionId));
merchantUserInformation.setSecurityAnswer1(answer.trim().toLowerCase());
} else if(i==1) {
merchantUserInformation.setSecurityQuestion2(String.valueOf(questionId));
merchantUserInformation.setSecurityAnswer2(answer.trim().toLowerCase());
} else if(i==2) {
merchantUserInformation.setSecurityQuestion3(String.valueOf(questionId));
merchantUserInformation.setSecurityAnswer3(answer.trim().toLowerCase());
} else {
break;
}
i++;
}
if(
!StringUtils.isBlank(merchantUserInformation.getSecurityQuestion1())
&& !StringUtils.isBlank(merchantUserInformation.getSecurityQuestion2())
&& !StringUtils.isBlank(merchantUserInformation.getSecurityQuestion3())
&& (merchantUserInformation.getSecurityQuestion1().equals(merchantUserInformation.getSecurityQuestion2()) || merchantUserInformation.getSecurityQuestion2().equals(merchantUserInformation.getSecurityQuestion3()) || merchantUserInformation.getSecurityQuestion1().equals(merchantUserInformation.getSecurityQuestion3())))
{
super.setErrorMessage("security.questions.differentmessages");
return INPUT;
}
mservice.saveOrUpdateMerchantUserInformation(merchantUserInformation);
this.setMerchantProfile(merchantUserInformation);
super.setSuccessMessage();
} catch (Exception e) {
log.error(e);
super.setTechnicalMessage();
return INPUT;
}
return SUCCESS;
}
public String answerQuestions() {
super.setPageTitle("security.question.title");
SecurityQuestionsModule module = (SecurityQuestionsModule)SpringUtil.getBean("securityQuestions");
Map questions = module.getSecurityQuestions(super.getLocale());
this.setSecurityQuestions(questions);
questionsText.add(0, module.getQuestionText(1,super.getLocale()));
questionsText.add(1, module.getQuestionText(2,super.getLocale()));
questionsText.add(2, module.getQuestionText(3,super.getLocale()));
try {
HttpSession session = super.getServletRequest().getSession(true);
Long merchantUserId = (Long)session.getAttribute("merchantUserId");
if(merchantUserId==null) {
log.error("MerchantUserInformationId is null");
super.setTechnicalMessage();
return INPUT;
}
//this will submit the questions and the answers
MerchantService mservice = (MerchantService)ServiceFactory.getService(ServiceFactory.MerchantService);
MerchantUserInformation merchantUserInformation = mservice.getMerchantUserInformation(merchantUserId);
if(merchantUserInformation==null) {
log.error("MerchantUserInformation is null");
super.setTechnicalMessage();
return INPUT;
}
int i = 0;
for(int j = 0; j < answersText.size(); j++) {
String answer = answersText.get(j);
//only 3 are stored in merchant user
if(i==0) {
if(!answer.trim().toLowerCase().equals(merchantUserInformation.getSecurityAnswer1())) {
super.setErrorMessage("message.invalid.security.answers");
return INPUT;
}
} else if(i==1) {
if(!answer.trim().toLowerCase().equals(merchantUserInformation.getSecurityAnswer2())) {
super.setErrorMessage("message.invalid.security.answers");
return INPUT;
}
} else if(i==2) {
if(!answer.trim().toLowerCase().equals(merchantUserInformation.getSecurityAnswer3())) {
super.setErrorMessage("message.invalid.security.answers");
return INPUT;
}
} else {
break;
}
i++;
}
//generate new password
PasswordGeneratorModule passwordGenerator = (PasswordGeneratorModule) SpringUtil
.getBean("passwordgenerator");
// encrypt
String key = EncryptionUtil.generatekey(String
.valueOf(SecurityConstants.idConstant));
boolean found = true;
String password = null;
String encrypted = null;
// validate if already exist
while (found) {
password = passwordGenerator.generatePassword();
encrypted = EncryptionUtil.encrypt(key, password);
MerchantUserInformation info =mservice.getMerchantInformationByUserNameAndPassword(
merchantUserInformation.getAdminName(), encrypted);
if (info == null) {
found = false;
}
}
merchantPassword = password;
merchantUserInformation.setAdminPass(encrypted);
mservice.saveOrUpdateMerchantUserInformation(merchantUserInformation);
this.setMerchantProfile(merchantUserInformation);
passwordResetSuccess = true;
} catch (Exception e) {
log.error(e);
super.setTechnicalMessage();
return INPUT;
}
return SUCCESS;
}
public String changeLanguage() {
Context context = super.getContext();
String language = super.getServletRequest().getParameter("lang");
if (!StringUtils.isBlank(language)) {
RefCache cache = RefCache.getInstance();
Map countries = cache.getAllcountriesmap(LanguageUtil
.getLanguageNumberCode(context.getLang()));
Country c = (Country) countries.get(context.getCountryid());
Locale locale = new Locale(language, c.getCountryIsoCode2());
super.setLocale(locale);
Context ctx = super.getContext();
ctx.setLang(locale.getLanguage());
}
return SUCCESS;
}
public String displayPassword() {
try {
super.setPageTitle("label.changepassword");
int merchantId = super.getContext().getMerchantid();
String user = super.getPrincipal().getRemoteUser();
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
merchantProfile = mservice.getMerchantUserInformation(user);
} catch (Exception e) {
log.error(e);
}
return SUCCESS;
}
public String changePassword() {
try {
super.setPageTitle("label.changepassword");
if (merchantProfile == null) {
log.error("merchantProfileIsNull");
super.setTechnicalMessage();
return INPUT;
}
int merchantId = super.getContext().getMerchantid();
String user = super.getPrincipal().getRemoteUser();
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
MerchantUserInformation profile = mservice
.getMerchantUserInformation(user);
// new paswords match
if (StringUtils.isBlank(merchantProfile.getAdminPass())) {
super.setErrorMessage("messages.required.currentpassword");
return INPUT;
}
if (StringUtils.isBlank(this.getNewPassword())) {
super.setErrorMessage("messages.required.newpassword");
return INPUT;
}
if (StringUtils.isBlank(this.getRepeatNewPassword())) {
super.setErrorMessage("messages.required.repeatnewpassword");
return INPUT;
}
if (!this.getNewPassword().equals(this.getRepeatNewPassword())) {
super.setErrorMessage("messages.password.match");
return INPUT;
}
// 6 to 8 characters
if (this.getNewPassword().length() < 6
|| this.getNewPassword().length() > 8) {
super.setErrorMessage("messages.password.length");
return INPUT;
}
String key = EncryptionUtil.generatekey(String
.valueOf(SecurityConstants.idConstant));
String enc = EncryptionUtil.encrypt(key, this.getNewPassword());
profile.setAdminPass(enc);
mservice.saveOrUpdateMerchantUserInformation(profile);
super.setSuccessMessage();
} catch (Exception e) {
log.error(e);
super.setTechnicalMessage();
return INPUT;
}
return SUCCESS;
}
public String display() {
try {
//@TODO set security questions and answers
super.setPageTitle("label.menu.group.profile");
SecurityQuestionsModule module = (SecurityQuestionsModule)SpringUtil.getBean("securityQuestions");
Map questions = module.getSecurityQuestions(super.getLocale());
this.setSecurityQuestions(questions);
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
merchantProfile = mservice.getMerchantUserInformation(super
.getPrincipal().getUserPrincipal().getName());
if (merchantProfile == null) {// should be created from the original
// subscribtion process
log.error("Profile does not exist for merchantid "
+ super.getPrincipal().getRemoteUser());
MessageUtil.addErrorMessage(super.getServletRequest(),
LabelUtil.getInstance().getText("errors.technical"));
return ERROR;
}
// NEED TO SET COUNTRY ID IN THE SESSION IN ORDER TO RETREIVE
// ASSOCIATE PROVINCES
if (merchantProfile.getUsercountrycode() == 0) {// original default
// country code
Configuration conf = PropertiesUtil.getConfiguration();
int defaultCountry = conf
.getInt("core.system.defaultcountryid",
Constants.US_COUNTRY_ID);
MessageUtil.addNoticeMessage(super.getServletRequest(),
LabelUtil.getInstance().getText(
"messages.updateinformation"));
merchantProfile.setUsercountrycode(defaultCountry);
super.prepareSelections(defaultCountry);
} else {
super.prepareSelections(merchantProfile.getUsercountrycode());
}
if(!StringUtils.isBlank(merchantProfile.getSecurityQuestion1())
|| !StringUtils.isBlank(merchantProfile.getSecurityQuestion2())
|| !StringUtils.isBlank(merchantProfile.getSecurityQuestion3())
) {
answers.add(0,Integer.parseInt(merchantProfile.getSecurityQuestion1()));
answers.add(1,Integer.parseInt(merchantProfile.getSecurityQuestion2()));
answers.add(2,Integer.parseInt(merchantProfile.getSecurityQuestion3()));
answersText.add(0, merchantProfile.getSecurityAnswer1());
answersText.add(1, merchantProfile.getSecurityAnswer2());
answersText.add(2, merchantProfile.getSecurityAnswer3());
}
/**
* //@todo get credit card //parse expiration date to mm yy format
* String ccDate = profile.getCcExpires(); if(ccDate!=null &&
* !ccDate.equals("")) { int length = ccDate.length(); String ccm =
* null; String ccy = null; if(length==4) { ccm =
* ccDate.substring(0,2); ccy = ccDate.substring(3); } else { ccm =
* "0" + ccDate.substring(0,1); ccy = ccDate.substring(2); }
* this.setCcYear(ccy); this.setCcMonth(ccm);
*
* this.setSecurityCode(new String(profile.getCcCvv())); } else {
* java.util.Calendar cal = new java.util.GregorianCalendar();
* this.setCcYear
* (String.valueOf((cal.get(java.util.Calendar.YEAR))));
* this.setCcMonth
* (String.valueOf((cal.get(java.util.Calendar.MONTH))));
* this.setSecurityCode(""); }
*
*
* if(profile.getCcNumber()!=null &&
* !profile.getCcNumber().trim().equals("")) { //decrypt credit card
* String decryptedvalue =
* EncryptionUtil.decrypt(EncryptionUtil.generatekey
* (String.valueOf(merchantid.intValue())), profile.getCcNumber());
* //mask value CreditCardUtil util = new CreditCardUtil(); String
* card = util.maskCardNumber(decryptedvalue);
* profile.setCcNumber(card); }
**/
// }
} catch (Exception e) {
MessageUtil.addErrorMessage(super.getServletRequest(), LabelUtil
.getInstance().getText("errors.technical"));
log.error(e);
}
return SUCCESS;
}
/**
* saveProfile
*
* @return "SUCCESS" or "ERROR"
* @throws Exception
*/
public String saveProfile() throws Exception {
try {
super.setPageTitle("label.menu.group.profile");
SecurityQuestionsModule module = (SecurityQuestionsModule)SpringUtil.getBean("securityQuestions");
Map questions = module.getSecurityQuestions(super.getLocale());
this.setSecurityQuestions(questions);
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
Context ctx = (Context) super.getServletRequest().getSession()
.getAttribute(ProfileConstants.context);
Integer merchantid = ctx.getMerchantid();
MerchantUserInformation mUserInfo = mservice
.getMerchantUserInformation(super.getPrincipal()
.getRemoteUser());
if (mUserInfo == null) {
mUserInfo = new MerchantUserInformation();
}
java.util.Date dt = new java.util.Date();
mUserInfo.setAdminEmail(this.merchantProfile.getAdminEmail());
mUserInfo.setUserfname(this.merchantProfile.getUserfname());
mUserInfo.setUserlname(this.merchantProfile.getUserlname());
mUserInfo.setUseraddress(this.merchantProfile.getUseraddress());
mUserInfo.setUsercity(this.merchantProfile.getUsercity());
mUserInfo.setUserphone(this.merchantProfile.getUserphone());
mUserInfo.setUserpostalcode(this.merchantProfile
.getUserpostalcode());
mUserInfo.setUserstate(this.merchantProfile.getUserstate());
mUserInfo.setUsercountrycode(this.merchantProfile
.getUsercountrycode());
mUserInfo.setUserlang(this.merchantProfile.getUserlang());
super.prepareSelections(mUserInfo.getUsercountrycode());
mUserInfo.setLastModified(new java.util.Date(dt.getTime()));
mservice.saveOrUpdateMerchantUserInformation(mUserInfo);
ctx.setLang(mUserInfo.getUserlang());
super.setSuccessMessage();
} catch (Exception e) {
if (e instanceof ConstraintViolationException) {
MessageUtil.addErrorMessage(super.getServletRequest(),
LabelUtil.getInstance().getText(
"messages.emailalreadyexist"));
} else {
log.error(e);
MessageUtil.addErrorMessage(super.getServletRequest(),
LabelUtil.getInstance().getText("errors.technical"));
}
}
return SUCCESS;
}
public String viewUser() throws Exception {
super.setPageTitle("label.admin.security.manageuser");
//get roles
LabelUtil label = LabelUtil.getInstance();
label.setLocale(super.getLocale());
//label.admin.security.admin
//label.admin.security.store
//label.admin.security.catalog
//label.admin.security.checkout
//label.admin.security.order
masterRoles.put("admin", label.getText("label.admin.security.admin"));
masterRoles.put("user", label.getText("label.admin.security.user"));
//get roles from def
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
Collection<MerchantUserRoleDef> defs = mservice.getMerchantUserRoleDef();
for(Object o : defs) {
MerchantUserRoleDef def = (MerchantUserRoleDef)o;
if(!def.getRoleCode().equals("admin") && !def.getRoleCode().equals("superuser")) {
roles.put(def.getRoleCode(),label.getText("label.admin.security." + def.getRoleCode()));
}
}
//see if user exist
MerchantUserInformation userInformation = this.getMerchantProfile();
if(userInformation!=null && userInformation.getMerchantUserId()!=null) {
merchantProfile = mservice.getMerchantUserInformation(userInformation.getMerchantUserId());
super.authorize((IMerchant)merchantProfile);
Collection rollColl = mservice.getUserRoles(merchantProfile.getAdminName());
for(Object o : rollColl) {
MerchantUserRole r = (MerchantUserRole)o;
userRoles.add(r.getRoleCode());
}
} else {
if(!userRoles.contains("superuser") || !userRoles.contains("admin") || !userRoles.contains("user")) {
userRoles.add("admin");
}
}
//if user == superuser -> admin if user = admin -> admin else -> user and populate checkboxes
return SUCCESS;
}
public String saveUser() throws Exception {
if(this.getMerchantProfile()==null) {
log.error("MerchantUserInformation should not be null");
super.setTechnicalMessage();
return INPUT;
}
this.viewUser();
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
if(StringUtils.isBlank(this.getSubmitMasterRole())) {
//set to admin by default
this.setSubmitMasterRole("admin");
}
//see if user exist
if(this.getMerchantProfile()!=null && this.getMerchantProfile().getMerchantUserId()!=null && this.getMerchantProfile().getMerchantUserId().longValue() >0) {
//Collection rollColl = mservice.getUserRoles(merchantProfile.getAdminName());
mservice.deleteUserRoles(merchantProfile.getAdminName());
}
if(this.getMerchantProfile()!=null && this.getMerchantProfile().getMerchantUserId()==null) {
//check if email already exist
MerchantUserInformation user = mservice.getMerchantUserInformationByAdminEmail(this.getMerchantProfile().getAdminEmail());
if(user!=null) {
super.setErrorMessage("messages.emailalreadyexist");
return INPUT;
}
}
List<MerchantUserRole> newRoles = new ArrayList();
if(this.getMerchantProfile()!=null && this.getMerchantProfile().getMerchantUserId()==null) {
this.getMerchantProfile().setAdminName(this.getAdminName());
}
if(!StringUtils.isBlank(this.getSubmitMasterRole()) && !this.getSubmitMasterRole().equals("admin")) {
for(Object o: submitRoles) {
String role = (String)o;
MerchantUserRole mur = new MerchantUserRole();
mur.setAdminName(this.getMerchantProfile().getAdminName());
mur.setRoleCode(role);
newRoles.add(mur);
}
}
//add master role
MerchantUserRole mur = new MerchantUserRole();
mur.setAdminName(this.getMerchantProfile().getAdminName());
mur.setRoleCode(this.getSubmitMasterRole());
newRoles.add(mur);
if(this.getMerchantProfile()!=null && this.getMerchantProfile().getMerchantUserId()==null) {
mservice.createMerchantUserInformation(super.getContext().getMerchantid(),this.getMerchantProfile(),newRoles,super.getLocale());
} else {
mservice.saveOrUpdateRoles(newRoles);
}
super.setSuccessMessage();
return SUCCESS;
}
/**
* Get a user list for a given store
* @return
* @throws Exception
*/
public String editUserList() throws Exception {
super.setPageTitle("label.user.userlist");
//view user list
//get users from merchantId
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
merchantUserInformations = mservice.getMerchantUserInfo(super.getContext().getMerchantid());
return SUCCESS;
}
public String deleteUser() throws Exception {
if(this.getMerchantProfile()==null || this.getMerchantProfile().getMerchantUserId()==null) {
log.error("Should receive MerchantUserInformation id");
super.setTechnicalMessage();
return INPUT;
}
//get users from merchantId
MerchantService mservice = (MerchantService) ServiceFactory
.getService(ServiceFactory.MerchantService);
MerchantUserInformation user = mservice.getMerchantUserInformation(this.getMerchantProfile().getMerchantUserId());
mservice.deleteMerchantUserInformation(user);
super.setSuccessMessage();
return SUCCESS;
}
public MerchantUserInformation getMerchantProfile() {
return merchantProfile;
}
public void setMerchantProfile(MerchantUserInformation merchantProfile) {
this.merchantProfile = merchantProfile;
}
public Integer getCountryCode() {
return countryCode;
}
public void setCountryCode(Integer countryCode) {
this.countryCode = countryCode;
}
public String getCcMonth() {
return ccMonth;
}
public void setCcMonth(String ccMonth) {
this.ccMonth = ccMonth;
}
public String getCcYear() {
return ccYear;
}
public void setCcYear(String ccYear) {
this.ccYear = ccYear;
}
public String getSecurityCode() {
return securityCode;
}
public void setSecurityCode(String securityCode) {
this.securityCode = securityCode;
}
public String getNewPassword() {
return newPassword;
}
public void setNewPassword(String newPassword) {
this.newPassword = newPassword;
}
public String getRepeatNewPassword() {
return repeatNewPassword;
}
public void setRepeatNewPassword(String repeatNewPassword) {
this.repeatNewPassword = repeatNewPassword;
}
public String getMerchantId() {
return merchantId;
}
public void setMerchantId(String merchantId) {
this.merchantId = merchantId;
}
public boolean isResetPasswordResponse() {
return resetPasswordResponse;
}
public void setResetPasswordResponse(boolean resetPasswordResponse) {
this.resetPasswordResponse = resetPasswordResponse;
}
public String getAdminName() {
return adminName;
}
public void setAdminName(String adminName) {
this.adminName = adminName;
}
public Map getSecurityQuestions() {
return securityQuestions;
}
public void setSecurityQuestions(Map securityQuestions) {
this.securityQuestions = securityQuestions;
}
public List<Integer> getAnswers() {
return answers;
}
public void setAnswers(List<Integer> answers) {
this.answers = answers;
}
public List<String> getAnswersText() {
return answersText;
}
public void setAnswersText(List<String> answersText) {
this.answersText = answersText;
}
public List<String> getQuestionsText() {
return questionsText;
}
public void setQuestionsText(List<String> questionsText) {
this.questionsText = questionsText;
}
@JSON(name="passwordResetSuccess")
public boolean isPasswordResetSuccess() {
return passwordResetSuccess;
}
public void setPasswordResetSuccess(boolean passwordResetSuccess) {
this.passwordResetSuccess = passwordResetSuccess;
}
public String getMerchantPassword() {
return merchantPassword;
}
public void setMerchantPassword(String merchantPassword) {
this.merchantPassword = merchantPassword;
}
public Map<String, String> getRoles() {
return roles;
}
public void setRoles(Map<String, String> roles) {
this.roles = roles;
}
public List<String> getSubmitRoles() {
return submitRoles;
}
public void setSubmitRoles(List<String> submitRoles) {
this.submitRoles = submitRoles;
}
public Map<String, String> getMasterRoles() {
return masterRoles;
}
public void setMasterRoles(Map<String, String> masterRoles) {
this.masterRoles = masterRoles;
}
public Collection<String> getUserRoles() {
return userRoles;
}
public void setUserRoles(Collection<String> userRoles) {
this.userRoles = userRoles;
}
public String getSubmitMasterRole() {
return submitMasterRole;
}
public void setSubmitMasterRole(String submitMasterRole) {
this.submitMasterRole = submitMasterRole;
}
public Collection<MerchantUserInformation> getMerchantUserInformations() {
return merchantUserInformations;
}
public void setMerchantUserInformations(
Collection<MerchantUserInformation> merchantUserInformations) {
this.merchantUserInformations = merchantUserInformations;
}
//public String getMasterRole() {
// return masterRole;
//}
//public void setMasterRole(String masterRole) {
// this.masterRole = masterRole;
//}
}