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 2020/12/06 15:24:04 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2533] group admin should have no ability to create new group

This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new be17124  [OPENMEETINGS-2533] group admin should have no ability to create new group
be17124 is described below

commit be17124a323c47a005cbcaae1ed001d846e59030
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Sun Dec 6 22:23:47 2020 +0700

    [OPENMEETINGS-2533] group admin should have no ability to create new group
---
 .../openmeetings/web/admin/AdminActionsPanel.java  | 13 +++++++++----
 .../openmeetings/web/admin/AdminBaseForm.java      | 14 ++++++++------
 .../web/admin/configurations/ConfigForm.java       |  2 +-
 .../web/admin/configurations/ConfigsPanel.java     |  4 ++--
 .../openmeetings/web/admin/groups/GroupForm.java   |  3 ++-
 .../openmeetings/web/admin/groups/GroupsPanel.java | 22 +++++++++++++++++-----
 .../openmeetings/web/admin/labels/LabelsForm.java  |  2 +-
 .../openmeetings/web/admin/labels/LangPanel.java   |  4 ++--
 .../openmeetings/web/admin/ldaps/LdapForm.java     |  2 +-
 .../openmeetings/web/admin/ldaps/LdapsPanel.java   |  4 ++--
 .../openmeetings/web/admin/oauth/OAuthForm.java    |  2 +-
 .../openmeetings/web/admin/oauth/OAuthPanel.java   |  4 ++--
 .../openmeetings/web/admin/rooms/RoomForm.java     |  2 +-
 .../openmeetings/web/admin/rooms/RoomsPanel.java   |  2 +-
 .../openmeetings/web/admin/users/UserForm.java     |  2 +-
 .../openmeetings/web/admin/users/UsersPanel.java   |  4 ++--
 .../openmeetings/web/common/FormActionsPanel.java  |  6 +++---
 17 files changed, 56 insertions(+), 36 deletions(-)

diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.java
index 2cb59f2..68f2cd9 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminActionsPanel.java
@@ -32,6 +32,7 @@ public abstract class AdminActionsPanel<T> extends FormActionsPanel<T> {
 	private static final long serialVersionUID = 1L;
 	private final Label newRecord = new Label("newRecord", Model.of(""));
 	private final Form<T> form;
+	private AjaxButton newBtn;
 	private AjaxLink<Void> delBtn;
 	private AjaxLink<Void> restoreBtn;
 
@@ -45,7 +46,7 @@ public abstract class AdminActionsPanel<T> extends FormActionsPanel<T> {
 		newRecord.setDefaultModelObject(getString("155"));
 		add(newRecord.setVisible(false).setOutputMarkupId(true));
 
-		final AjaxButton newBtn = new AjaxButton("btn-new", form) {
+		newBtn = new AjaxButton("btn-new", form) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
@@ -75,7 +76,7 @@ public abstract class AdminActionsPanel<T> extends FormActionsPanel<T> {
 			public void onClick(AjaxRequestTarget target) {
 				// repaint the feedback panel so that it is hidden
 				target.add(feedback);
-				setNewVisible(false);
+				setNewRecordVisible(false);
 				onDeleteSubmit(target, form);
 			}
 		};
@@ -87,7 +88,7 @@ public abstract class AdminActionsPanel<T> extends FormActionsPanel<T> {
 			public void onClick(AjaxRequestTarget target) {
 				// repaint the feedback panel so that it is hidden
 				target.add(feedback);
-				setNewVisible(false);
+				setNewRecordVisible(false);
 				onRestoreSubmit(target, form);
 			}
 		};
@@ -96,8 +97,12 @@ public abstract class AdminActionsPanel<T> extends FormActionsPanel<T> {
 		super.onInitialize();
 	}
 
-	@Override
 	public void setNewVisible(boolean visible) {
+		newBtn.setVisible(visible);
+	}
+
+	@Override
+	public void setNewRecordVisible(boolean visible) {
 		newRecord.setVisible(visible);
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
index dac21ed..14821fb 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminBaseForm.java
@@ -41,7 +41,11 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 
 	protected AdminBaseForm(String id, IModel<T> object) {
 		super(id, object);
+	}
 
+	@Override
+	protected void onInitialize() {
+		super.onInitialize();
 		savePanel = new AdminActionsPanel<>("buttons", this) {
 			private static final long serialVersionUID = 1L;
 
@@ -81,12 +85,6 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 			}
 		};
 		add(savePanel);
-	}
-
-	@Override
-	protected void onInitialize() {
-		super.onInitialize();
-
 		// attach an ajax validation behavior to all form component's keydown
 		// event and throttle it down to once per second
 		add(validationBehavior);
@@ -96,6 +94,10 @@ public abstract class AdminBaseForm<T> extends Form<T> {
 		savePanel.setNewVisible(visible);
 	}
 
+	public void setNewRecordVisible(boolean visible) {
+		savePanel.setNewRecordVisible(visible);
+	}
+
 	public void setDelVisible(boolean visible) {
 		savePanel.setDelVisible(visible);
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
index e4f70f3..15de0d5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigForm.java
@@ -168,7 +168,7 @@ public class ConfigForm extends AdminBaseForm<Configuration> {
 			getModelObject().setId(c.getId());
 		}
 		setModelObject(cfgDao.update(getModelObject(), WebSession.getUserId()));
-		setNewVisible(false);
+		setNewRecordVisible(false);
 		target.add(listContainer);
 		refresh(target);
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
index 21744f3..efdaa0e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/configurations/ConfigsPanel.java
@@ -67,7 +67,7 @@ public class ConfigsPanel extends AdminBasePanel {
 
 					@Override
 					protected void onEvent(AjaxRequestTarget target) {
-						form.setNewVisible(false);
+						form.setNewRecordVisible(false);
 						form.setModelObject(c);
 						target.add(form, listContainer);
 					}
@@ -92,7 +92,7 @@ public class ConfigsPanel extends AdminBasePanel {
 		add(navigator);
 
 		form = new ConfigForm("form", listContainer, new Configuration());
-		form.setNewVisible(true);
+		form.setNewRecordVisible(true);
 		add(form);
 		super.onInitialize();
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
index 1bedf92..f0d002a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupForm.java
@@ -154,6 +154,7 @@ public class GroupForm extends AdminBaseForm<Group> {
 		super.onInitialize();
 		final boolean isGroupAdmin = hasGroupAdminLevel(getRights());
 		setNewVisible(!isGroupAdmin);
+		setNewRecordVisible(!isGroupAdmin);
 		userToadd.setEnabled(!isGroupAdmin);
 		add(new RequiredTextField<String>("name").setLabel(new ResourceModel("165")));
 		add(logo);
@@ -238,7 +239,7 @@ public class GroupForm extends AdminBaseForm<Group> {
 			usersPanel.update(grpUser);
 		}
 		logo.process(Optional.of(target));
-		setNewVisible(false);
+		setNewRecordVisible(false);
 		updateView(target);
 	}
 }
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
index 2af6325..2aa075d 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
@@ -18,7 +18,11 @@
  */
 package org.apache.openmeetings.web.admin.groups;
 
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+
+import java.util.Iterator;
 
 import org.apache.openmeetings.db.dao.user.GroupDao;
 import org.apache.openmeetings.db.entity.user.Group;
@@ -51,11 +55,12 @@ public class GroupsPanel extends AdminBasePanel {
 
 	public GroupsPanel(String id) {
 		super(id);
-		final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+	}
 
-		//Adding the Group Form
-		form = new GroupForm("form", listContainer, new Group());
-		add(form);
+	@Override
+	protected void onInitialize() {
+		super.onInitialize();
+		final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
 
 		//List view
 		SearchableDataView<Group> dataView = new SearchableDataView<>("groupList", new SearchableGroupAdminDataProvider<>(GroupDao.class)) {
@@ -75,7 +80,7 @@ public class GroupsPanel extends AdminBasePanel {
 
 					@Override
 					protected void onEvent(AjaxRequestTarget target) {
-						form.setNewVisible(false);
+						form.setNewRecordVisible(false);
 						form.setModelObject(g);
 						form.updateView(target);
 						target.add(listContainer);
@@ -85,6 +90,13 @@ public class GroupsPanel extends AdminBasePanel {
 			}
 		};
 
+		final boolean isGroupAdmin = hasGroupAdminLevel(getRights());
+		Iterator<? extends Group> iter = dataView.getDataProvider().iterator(0, 1);
+		Group g = iter.hasNext() ? iter.next() : new Group();
+		//Adding the Group Form
+		form = new GroupForm("form", listContainer, isGroupAdmin ? g : new Group());
+		add(form);
+
 		//Paging
 		add(listContainer.add(dataView).setOutputMarkupId(true));
 		PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
index c6ab4df..22ef297 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LabelsForm.java
@@ -75,7 +75,7 @@ public class LabelsForm extends AdminBaseForm<StringLabel> {
 		} catch (Exception e) {
 			error("Unexpected error while saving label:" + e.getMessage());
 		}
-		setNewVisible(false);
+		setNewRecordVisible(false);
 		target.add(panel.listContainer);
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
index 4d43642..3c36ece 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
@@ -93,7 +93,7 @@ public class LangPanel extends AdminBasePanel {
 		language = new AbstractMap.SimpleEntry<>(1L, Locale.ENGLISH);
 
 		final LabelsForm form = new LabelsForm("form", this, new StringLabel(null, null));
-		form.setNewVisible(true);
+		form.setNewRecordVisible(true);
 		add(form);
 
 		final SearchableDataView<StringLabel> dataView = new SearchableDataView<>(
@@ -124,7 +124,7 @@ public class LangPanel extends AdminBasePanel {
 					@Override
 					protected void onEvent(AjaxRequestTarget target) {
 						form.setModelObject(fv);
-						form.setNewVisible(false);
+						form.setNewRecordVisible(false);
 						target.add(form, listContainer);
 					}
 				});
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
index 920a28c..ab3063f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
@@ -72,7 +72,7 @@ public class LdapForm extends AdminBaseForm<LdapConfig> {
 	@Override
 	protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
 		setModelObject(ldapDao.update(getModelObject(), WebSession.getUserId()));
-		setNewVisible(false);
+		setNewRecordVisible(false);
 		target.add(this, listContainer);
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
index a6d0db7..2b23200 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapsPanel.java
@@ -68,7 +68,7 @@ public class LdapsPanel extends AdminBasePanel {
 					@Override
 					protected void onEvent(AjaxRequestTarget target) {
 						form.setModelObject(lc);
-						form.setNewVisible(false);
+						form.setNewRecordVisible(false);
 						target.add(form, listContainer);
 					}
 				});
@@ -92,7 +92,7 @@ public class LdapsPanel extends AdminBasePanel {
 		add(navigator);
 
 		form = new LdapForm("form", listContainer, new LdapConfig());
-		form.setNewVisible(true);
+		form.setNewRecordVisible(true);
 		add(form);
 
 		super.onInitialize();
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
index 61ac9bb..d4163e5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
@@ -152,7 +152,7 @@ public class OAuthForm extends AdminBaseForm<OAuthServer> {
 		oauthDao.update(getModelObject(), getUserId());
 		OAuthServer oauthServer = oauthDao.get(getModelObject().getId());
 		this.setModelObject(oauthServer);
-		setNewVisible(false);
+		setNewRecordVisible(false);
 		target.add(this);
 		target.add(listContainer);
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
index 3ffff79..c988ad7 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthPanel.java
@@ -62,7 +62,7 @@ public class OAuthPanel extends AdminBasePanel {
 					@Override
 					protected void onEvent(AjaxRequestTarget target) {
 						form.setModelObject(server);
-						form.setNewVisible(false);
+						form.setNewRecordVisible(false);
 						target.add(form, listContainer);
 					}
 				});
@@ -87,7 +87,7 @@ public class OAuthPanel extends AdminBasePanel {
 		add(navigator);
 
 		form = new OAuthForm("form", listContainer, new OAuthServer());
-		form.setNewVisible(true);
+		form.setNewRecordVisible(true);
 		add(form);
 		super.onInitialize();
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index aa73236..f0ddae8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -452,7 +452,7 @@ public class RoomForm extends AdminBaseForm<Room> {
 			}
 			roomDao.update(getModelObject(), getUserId());
 		}
-		setNewVisible(false);
+		setNewRecordVisible(false);
 		updateView(target);
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
index 62c80a5..c713faa 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
@@ -62,7 +62,7 @@ public class RoomsPanel extends AdminBasePanel {
 
 					@Override
 					protected void onEvent(AjaxRequestTarget target) {
-						form.setNewVisible(false);
+						form.setNewRecordVisible(false);
 						form.setModelObject(roomDao.get(roomId));
 						form.updateView(target);
 						target.add(form, listContainer);
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 251156b..39fc92a 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
@@ -277,7 +277,7 @@ public class UserForm extends AdminBaseForm<User> {
 
 	private void updateForm(AjaxRequestTarget target) {
 		setModelObject(userDao.get(getModelObject().getId()));
-		setNewVisible(false);
+		setNewRecordVisible(false);
 		target.add(this, listContainer);
 	}
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
index 14b1a2a..729e914 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
@@ -77,7 +77,7 @@ public class UsersPanel extends AdminBasePanel {
 					@Override
 					protected void onEvent(AjaxRequestTarget target) {
 						form.setModelObject(userDao.get(userId));
-						form.setNewVisible(false);
+						form.setNewRecordVisible(false);
 						form.update(target);
 					}
 				});
@@ -111,7 +111,7 @@ public class UsersPanel extends AdminBasePanel {
 				.addButton(OmModalCloseButton.of("54"));
 
 		form = new UserForm("form", listContainer, getNewUserInstance(userDao.get(getUserId())), adminPass, warning);
-		form.setNewVisible(true);
+		form.setNewRecordVisible(true);
 		add(form, warning);
 		super.onInitialize();
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java
index e58dcab..abd9863 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/FormActionsPanel.java
@@ -72,7 +72,7 @@ public abstract class FormActionsPanel<T> extends Panel {
 			public void onClick(AjaxRequestTarget target) {
 				// repaint the feedback panel so that it is hidden
 				target.add(feedback);
-				setNewVisible(false);
+				setNewRecordVisible(false);
 				onRefreshSubmit(target, form);
 			}
 		});
@@ -83,7 +83,7 @@ public abstract class FormActionsPanel<T> extends Panel {
 			public void onClick(AjaxRequestTarget target) {
 				// repaint the feedback panel so that it is hidden
 				target.add(feedback);
-				setNewVisible(false);
+				setNewRecordVisible(false);
 				onPurgeSubmit(target, form);
 			}
 		};
@@ -101,7 +101,7 @@ public abstract class FormActionsPanel<T> extends Panel {
 	 *
 	 * @param visible - new visibility
 	 */
-	public void setNewVisible(boolean visible) {
+	public void setNewRecordVisible(boolean visible) {
 		// for admin only, will be implemented in admin
 	}