You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2018/01/26 03:53:14 UTC

[06/13] openmeetings git commit: [OPENMEETINGS-1812] admin password is checked during delete of privileged user

[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/wicket-defer-all
Commit: 88c4d9037d8837cbfa6dc9ed15355cc49a493e33
Parents: d0512ba
Author: Maxim Solodovnik <so...@gmail.com>
Authored: Thu Jan 11 22:52:46 2018 +0700
Committer: Maxim Solodovnik <so...@gmail.com>
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<>();