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<>();

Reply via email to