/*
* Copyright 2009, OpenIAM LLC
* This file is part of the OpenIAM Identity and Access Management Suite
*
* OpenIAM Identity and Access Management Suite is free software:
* you can redistribute it and/or modify
* it under the terms of the GNU General Public License
* version 3 as published by the Free Software Foundation.
*
* OpenIAM is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* Lesser GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with OpenIAM. If not, see <http://www.gnu.org/licenses/>. *
*/
/**
*
*/
package org.openiam.selfsrvc.pswd;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openiam.idm.srvc.auth.ws.LoginDataWebService;
import org.openiam.idm.srvc.policy.service.PolicyDataService;
import org.openiam.idm.srvc.pswd.service.ChallengeResponseService;
import org.openiam.idm.srvc.secdomain.service.SecurityDomainDataService;
import org.openiam.provision.dto.PasswordSync;
import org.openiam.provision.service.ProvisionService;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractWizardFormController;
import org.springframework.web.servlet.view.RedirectView;
/**
* @author suneet
*
*/
public class UnlockUserWizardController extends AbstractWizardFormController {
protected LoginDataWebService loginManager;
protected PasswordConfiguration configuration;
protected PolicyDataService policyDataService;
protected SecurityDomainDataService secDomainService;
protected ChallengeResponseService challengeResponse;
protected static final Log log = LogFactory.getLog(UnlockUserWizardController.class);
protected ProvisionService provisionService;
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.AbstractWizardFormController#processFinish(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
*/
@Override
protected ModelAndView processFinish(HttpServletRequest request,
HttpServletResponse response, Object command, BindException arg3)
throws Exception {
UnlockUserCommand cmd =(UnlockUserCommand)command;
// get objects from the command object
String password = cmd.getPassword();
// update the password in the openiam repository of the primary id
String managedSysId = configuration.getDefaultManagedSysId();
String secDomainId = configuration.getDefaultSecurityDomain();
//String encPassword = loginManager.encryptPassword(password);
//this.loginManager.resetPassword(secDomainId, cmd.getPrincipal(), managedSysId, encPassword);
log.info("-Sync password start");
PasswordSync passwordSync = new PasswordSync("RESET PASSWORD", managedSysId, password,
cmd.getPrincipal(), null, secDomainId, "SELFSERVICE", false );
passwordSync.setRequestClientIP(request.getRemoteHost());
passwordSync.setRequestorLogin(cmd.getPrincipal());
passwordSync.setRequestorDomain(secDomainId);
provisionService.setPassword(passwordSync);
log.info("-Sync password complete");
Map model = new HashMap();
model.put("message", "Job done!");
return new ModelAndView("pub/confirm");
}
@Override
protected ModelAndView processCancel(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
Map model = new HashMap();
model.put("message", "Request to reset the password has been canceled");
return new ModelAndView(new RedirectView("/login.selfserve",true));
}
@Override
protected void validatePage(Object command, Errors errors, int page) {
log.debug("Validate page:" + page);
UnlockUserValidator validator = (UnlockUserValidator)getValidator();
switch (page) {
case 0:
validator.validateUnlockUser(command, errors);
break;
case 1:
validator.validateUnlockVerifyIdentity(command, errors);
break;
case 2:
validator.validateUnlockSetNewPassword(command, errors);
break;
}
}
public PasswordConfiguration getConfiguration() {
return configuration;
}
public void setConfiguration(PasswordConfiguration configuration) {
this.configuration = configuration;
}
public PolicyDataService getPolicyDataService() {
return policyDataService;
}
public void setPolicyDataService(PolicyDataService policyDataService) {
this.policyDataService = policyDataService;
}
public SecurityDomainDataService getSecDomainService() {
return secDomainService;
}
public void setSecDomainService(SecurityDomainDataService secDomainService) {
this.secDomainService = secDomainService;
}
public ChallengeResponseService getChallengeResponse() {
return challengeResponse;
}
public void setChallengeResponse(ChallengeResponseService challengeResponse) {
this.challengeResponse = challengeResponse;
}
public ProvisionService getProvisionService() {
return provisionService;
}
public void setProvisionService(ProvisionService provisionService) {
this.provisionService = provisionService;
}
public LoginDataWebService getLoginManager() {
return loginManager;
}
public void setLoginManager(LoginDataWebService loginManager) {
this.loginManager = loginManager;
}
}