package org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.pwdreset; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.SubmitLink; import org.apache.wicket.markup.html.panel.FeedbackPanel; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.CompoundPropertyModel; import org.atricore.idbus.capabilities.sso.ui.internal.BaseWebApplication; import org.atricore.idbus.capabilities.sso.ui.internal.SSOIdPApplication; import org.atricore.idbus.capabilities.sso.ui.page.selfsvcs.profile.ProfilePage; import org.atricore.idbus.kernel.main.provisioning.domain.User; import org.atricore.idbus.kernel.main.provisioning.exception.ProvisioningException; import org.atricore.idbus.kernel.main.provisioning.spi.request.ConfirmResetPasswordRequest; import org.atricore.idbus.kernel.main.provisioning.spi.request.FindUserByUsernameRequest; import org.atricore.idbus.kernel.main.provisioning.spi.request.ResetPasswordRequest; import org.atricore.idbus.kernel.main.provisioning.spi.response.FindUserByUsernameResponse; import org.atricore.idbus.kernel.main.provisioning.spi.response.ResetPasswordResponse; /** * @author: sgonzalez@atriocore.com * @date: 3/11/13 */ public class PwdResetPanel extends Panel { private static final Log logger = LogFactory.getLog(PwdResetPanel.class); private Form form; private String username; public PwdResetPanel(String id, String username) { super(id); this.username = username; form = new Form<PwdResetModel>("pwdResetForm", new CompoundPropertyModel<PwdResetModel>(new PwdResetModel())); final PasswordTextField newPassword = new PasswordTextField("newPassword"); form.add(newPassword); final PasswordTextField retypedPassword = new PasswordTextField("retypedPassword"); form.add(retypedPassword); final SubmitLink submit = new SubmitLink("doSave") { @Override public void onSubmit() { try { pwdReset(); onPwdResetSucceeded(); } catch (Exception e) { logger.error("Fatal error during password reset : " + e.getMessage(), e); onPwdResetFailed(); } } }; form.add(submit); add(form); // Create feedback panel and add it to page final WebMarkupContainer feedbackBox = new WebMarkupContainer("feedbackBox"); add(feedbackBox); final FeedbackPanel feedback = new FeedbackPanel("feedback"); feedback.setOutputMarkupId(true); feedbackBox.add(feedback); } private PwdResetModel getPwdResetModel() { return (PwdResetModel) form.getDefaultModelObject(); } protected void onPwdResetSucceeded() { // Go to profile form.setResponsePage(((BaseWebApplication)getApplication()).resolvePage("SS/PROFILE")); error(getLocalizer().getString("app.error", this, "Operation failed")); } protected void onPwdResetFailed() { error(getLocalizer().getString("app.error", this, "Operation failed")); } protected void pwdReset() throws ProvisioningException { SSOIdPApplication app = (SSOIdPApplication) getApplication(); PwdResetModel pwdReset = getPwdResetModel(); FindUserByUsernameRequest fu = new FindUserByUsernameRequest(); fu.setUsername(username); FindUserByUsernameResponse fur = app.getProvisioningTarget().findUserByUsername(fu); User user = fur.getUser(); ResetPasswordRequest req = new ResetPasswordRequest(user); req.setNewPassword(pwdReset.getNewPassword()); ResetPasswordResponse resp = app.getProvisioningTarget().resetPassword(req); } }