Repository: openmeetings Updated Branches: refs/heads/4.0.x d0512ba2e -> 88c4d9037
[OPENMEETINGS-1812] admin password is checked during delete of privileged user Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/88c4d903 Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/88c4d903 Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/88c4d903 Branch: refs/heads/4.0.x Commit: 88c4d9037d8837cbfa6dc9ed15355cc49a493e33 Parents: d0512ba Author: Maxim Solodovnik <[email protected]> Authored: Thu Jan 11 22:52:46 2018 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Thu Jan 11 22:52:46 2018 +0700 ---------------------------------------------------------------------- .../web/admin/users/PasswordDialog.java | 19 +++++++++++++++++-- .../openmeetings/web/admin/users/UserForm.java | 15 +++++++++++++-- 2 files changed, 30 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/88c4d903/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java index cac56a1..641ed8a 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/PasswordDialog.java @@ -26,9 +26,11 @@ import java.util.List; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.PasswordTextField; import org.apache.wicket.model.Model; +import org.danekja.java.util.function.serializable.SerializableConsumer; import com.googlecode.wicket.jquery.core.Options; import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog; @@ -42,6 +44,7 @@ public class PasswordDialog extends AbstractFormDialog<String> { protected final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true)); private final Form<String> form = new Form<>("form"); private final PasswordTextField pass = new PasswordTextField("password"); + private SerializableConsumer<AjaxRequestTarget> action = null; public PasswordDialog(String id) { super(id, ""); @@ -56,7 +59,7 @@ public class PasswordDialog extends AbstractFormDialog<String> { setTitle(Model.of(getString("537"))); ok = new DialogButton("ok", getString("54")); cancel = new DialogButton("cancel", getString("lbl.cancel")); - add(form.add(feedback, pass.setRequired(false).setLabel(Model.of(getString("110"))))); + add(form.add(feedback, pass.setRequired(false).setLabel(Model.of(getString("110"))).setOutputMarkupPlaceholderTag(true).setOutputMarkupId(true))); super.onInitialize(); } @@ -81,19 +84,31 @@ public class PasswordDialog extends AbstractFormDialog<String> { } @Override + protected void onOpen(IPartialPageRequestHandler handler) { + handler.add(pass.setModelObject("")); + super.onOpen(handler); + } + + @Override public void onClick(AjaxRequestTarget target, DialogButton button) { if (!form.hasError() || !button.equals(ok)) { super.onClick(target, button); } } + public void setAction(SerializableConsumer<AjaxRequestTarget> action) { + this.action = action; + } + @Override protected void onSubmit(AjaxRequestTarget target) { final UserForm uf = getUserForm(); if (uf.isAdminPassRequired()) { final UserDao dao = getBean(UserDao.class); if (dao.verifyPassword(getUserId(), pass.getConvertedInput())) { - uf.saveUser(target); + if (action != null) { + action.accept(target); + } } else { form.error(getString("error.bad.password")); target.add(feedback); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/88c4d903/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java index 00a1733..a911d88 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java @@ -71,6 +71,7 @@ import org.apache.wicket.model.CompoundPropertyModel; import org.apache.wicket.model.Model; import org.apache.wicket.util.string.Strings; import org.apache.wicket.util.time.Duration; +import org.danekja.java.util.function.serializable.SerializableConsumer; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; import org.wicketstuff.select2.Response; @@ -183,6 +184,7 @@ public class UserForm extends AdminBaseForm<User> { @Override protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) { if (isAdminPassRequired()) { + adminPass.setAction((SerializableConsumer<AjaxRequestTarget>)t -> saveUser(t)); adminPass.open(target); } else { saveUser(target); @@ -245,14 +247,23 @@ public class UserForm extends AdminBaseForm<User> { update(target); } - @Override - protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) { + private void deleteUser(AjaxRequestTarget target) { UserDao userDao = getBean(UserDao.class); userDao.delete(getModelObject(), getUserId()); setModelObject(userDao.getNewUserInstance(userDao.get(getUserId()))); update(target); } + @Override + protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) { + if (isAdminPassRequired()) { + adminPass.setAction((SerializableConsumer<AjaxRequestTarget>)t -> deleteUser(t)); + adminPass.open(target); + } else { + deleteUser(target); + } + } + public void updateDomain(AjaxRequestTarget target) { User u = getModelObject(); final Map<Long, String> values = new HashMap<>();
