/** * Copyright 2009 Roland Foerther, Carl-Eric-Menzel, Olaf Siefart * * 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.senacor.wbs.web.user; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.markup.html.form.validation.EqualPasswordInputValidator; import org.apache.wicket.markup.html.panel.Panel; import org.apache.wicket.model.PropertyModel; import org.apache.wicket.security.components.markup.html.form.SecureForm; import org.apache.wicket.spring.injection.annot.SpringBean; import com.senacor.domain.user.User; import com.senacor.domain.user.UserManager; import com.senacor.wbs.web.border.LayoutColumn; import com.senacor.wbs.web.border.ContentLayout; import com.senacor.wbs.web.border.LayoutColumn.ColumnType; import com.senacor.wbs.web.border.LayoutColumn.Position; public class ChangePasswordPanel extends Panel { @SpringBean private UserManager userManager; private ChangePasswordForm changePasswortForm; public ChangePasswordPanel(String id, User user, boolean isAdmin) { super(id); changePasswortForm = new ChangePasswordForm("changePasswortForm", user, isAdmin); add(changePasswortForm); } class ChangePasswordForm extends SecureForm { private String oldPassword = ""; private String newPassword1 = ""; private String newPassword2 = ""; private User user; private final boolean isAdmin; public ChangePasswordForm(String id, User user, boolean isAdmin) { super(id); this.user = user; this.isAdmin = isAdmin; ContentLayout subLayout1 = new ContentLayout("sublayout1"); add(subLayout1); subLayout1.add(new LayoutColumn("colOldPwd", ColumnType.c25l, Position.LEFT)); subLayout1.add(new LayoutColumn("colNewPwd1", ColumnType.c25l, Position.INTERMEDIATE)); subLayout1.add(new LayoutColumn("colNewPwd2", ColumnType.c25l, Position.INTERMEDIATE)); subLayout1.add(new LayoutColumn("colAction", ColumnType.c25r, Position.RIGHT)); ContentLayout subLayout2 = new ContentLayout("sublayout2"); add(subLayout2); LayoutColumn column1 = new LayoutColumn("colOldPwd", ColumnType.c25l, Position.LEFT); column1.add(new PasswordTextField("oldPassword", new PropertyModel<String>(this, "oldPassword")) .setRequired(!isAdmin).setEnabled(!isAdmin)); subLayout2.add(column1); LayoutColumn column2 = new LayoutColumn("colNewPwd1", ColumnType.c25l, Position.INTERMEDIATE); FormComponent<String> newPassword1FC = new PasswordTextField("newPassword1", new PropertyModel<String>(this, "newPassword1")) .setRequired(true); column2.add(newPassword1FC); subLayout2.add(column2); LayoutColumn column3 = new LayoutColumn("colNewPwd2", ColumnType.c25l, Position.INTERMEDIATE); FormComponent<String> newPassword2FC = new PasswordTextField("newPassword2", new PropertyModel<String>(this, "newPassword2")) .setRequired(true); column3.add(newPassword2FC); subLayout2.add(column3); LayoutColumn column4 = new LayoutColumn("colAction", ColumnType.c25r, Position.RIGHT); column4.add(new Button("changePassword")); subLayout2.add(column4); add(new EqualPasswordInputValidator(newPassword1FC, newPassword2FC)); } @Override protected void onSubmit() { if (!isAdmin && !user.getPasswort().equals(oldPassword)) { error("Das eingegebene alte Passwort ist nicht korrekt"); } else { user.setPasswort(newPassword1); userManager.saveOrUpdate(user); oldPassword = ""; newPassword1 = ""; newPassword2 = ""; info(getString("password.changed")); } } } }