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 2016/11/07 03:43:31 UTC
svn commit: r1768421 [2/2] - in /openmeetings/application:
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/
branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/
branches/3.1.x/openmeeti...
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/user/User.java Mon Nov 7 03:43:30 2016
@@ -110,6 +110,7 @@ public class User implements IDataProvid
@XmlType(namespace="org.apache.openmeetings.user.user.right")
public enum Right {
Admin // access to Admin module
+ , GroupAdmin // partial access to Admin module (should not be directly assigned)
, Room // enter the room
, Dashboard // access the dashboard
, Login // login to Om internal DB
Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java Mon Nov 7 03:43:30 2016
@@ -92,6 +92,10 @@ public class AuthLevelUtil {
return check(rights, User.Right.Admin);
}
+ public static boolean hasGroupAdminLevel(Set<User.Right> rights) {
+ return check(rights, User.Right.GroupAdmin);
+ }
+
public static boolean hasWebServiceLevel(Set<User.Right> rights) {
return check(rights, User.Right.Soap);
}
Modified: openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java (original)
+++ openmeetings/application/trunk/openmeetings-install/src/main/java/org/apache/openmeetings/installation/ImportInitvalues.java Mon Nov 7 03:43:30 2016
@@ -48,6 +48,9 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SCREENSHARING_QUALITY;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SIP_ENABLED;
import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_SOAP_REGISTER_KEY;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_ADMIN;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_GROUP_ADMIN;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_USER;
import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_LOGIN_MINIMUM_LENGTH;
import static org.apache.openmeetings.util.OpenmeetingsVariables.USER_PASSWORD_MINIMUM_LENGTH;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
@@ -118,39 +121,39 @@ public class ImportInitvalues {
/*
* ######################## Dashboard Menu Points
*/
- Naviglobal home = navimanagement.addGlobalStructure(1, "124", 1, "home", "582");
- navimanagement.addMainStructure("dashboardModuleStartScreen", null, 1, "290", 1, "Dashboard", home.getId(), "1450");
- navimanagement.addMainStructure("dashboardModuleCalendar", null, 2, "291", 1, "Calendar", home.getId(), "1451");
+ Naviglobal home = navimanagement.addGlobalStructure(1, "124", LEVEL_USER, "home", "582");
+ navimanagement.addMainStructure("dashboardModuleStartScreen", null, 1, "290", LEVEL_USER, "Dashboard", home.getId(), "1450");
+ navimanagement.addMainStructure("dashboardModuleCalendar", null, 2, "291", LEVEL_USER, "Calendar", home.getId(), "1451");
/*
* ######################## Conference Menu Points
*/
- Naviglobal rooms = navimanagement.addGlobalStructure(2, "792", 1, "Conference Rooms", "793");
- navimanagement.addMainStructure("conferenceModuleRoomList", "publicTabButton", 1, "777", 1, "Public Rooms", rooms.getId(), "1506");
- navimanagement.addMainStructure("conferenceModuleRoomList", "privateTabButton", 2, "779", 1, "Private Rooms", rooms.getId(), "1507");
- navimanagement.addMainStructure("conferenceModuleRoomList", "myTabButton", 3, "781", 1, "My Rooms", rooms.getId(), "1508");
+ Naviglobal rooms = navimanagement.addGlobalStructure(2, "792", LEVEL_USER, "Conference Rooms", "793");
+ navimanagement.addMainStructure("conferenceModuleRoomList", "publicTabButton", 1, "777", LEVEL_USER, "Public Rooms", rooms.getId(), "1506");
+ navimanagement.addMainStructure("conferenceModuleRoomList", "privateTabButton", 2, "779", LEVEL_USER, "Private Rooms", rooms.getId(), "1507");
+ navimanagement.addMainStructure("conferenceModuleRoomList", "myTabButton", 3, "781", LEVEL_USER, "My Rooms", rooms.getId(), "1508");
/*
* ######################## Recording Menu Points
*/
- Naviglobal rec = navimanagement.addGlobalStructure(3, "395", 1, "record", "583");
- navimanagement.addMainStructure("recordModule", null, 1, "395", 1, "Recordings", rec.getId(), "1452");
+ Naviglobal rec = navimanagement.addGlobalStructure(3, "395", LEVEL_USER, "record", "583");
+ navimanagement.addMainStructure("recordModule", null, 1, "395", LEVEL_USER, "Recordings", rec.getId(), "1452");
/*
* ######################## Administration Menu Points
*/
- Naviglobal admin = navimanagement.addGlobalStructure(6, "6", 3, "Administration Menu", "586");
- navimanagement.addMainStructure("adminModuleUser", null, 14, "125", 2, "Administration of Users", admin.getId(), "1454");
- navimanagement.addMainStructure("adminModuleConnections", null, 15, "597", 3, "Aministration of Connections", admin.getId(), "1455");
- navimanagement.addMainStructure("adminModuleOrg", null, 16, "127", 3, "Administration of Groups", admin.getId(), "1456");
- navimanagement.addMainStructure("adminModuleRoom", null, 17, "186", 3, "Administration of Rooms", admin.getId(), "1457");
- navimanagement.addMainStructure("adminModuleConfiguration", null, 18, "263", 3, "Administration of Configuration", admin.getId(), "1458");
- navimanagement.addMainStructure("adminModuleLanguages", null, 19, "348", 3, "Administration of Languages", admin.getId(), "1459");
- navimanagement.addMainStructure("adminModuleLDAP", null, 20, "1103", 3, "Administration of LDAP Configs", admin.getId(), "1460");
- navimanagement.addMainStructure("adminModuleOAuth", null, 21, "1571", 3, "Administration of OAuth2 servers", admin.getId(), "1572");
- navimanagement.addMainStructure("adminModuleBackup", null, 22, "367", 3, "Administration of Backups", admin.getId(), "1461");
- navimanagement.addMainStructure("adminModuleServers", null, 23, "1498", 3, "Administration of Servers", admin.getId(), "1499");
- navimanagement.addMainStructure("adminModuleEmail", null, 24, "main.menu.admin.email", 3, "Administration of Emails", admin.getId(), "main.menu.admin.email.desc");
+ Naviglobal admin = navimanagement.addGlobalStructure(6, "6", LEVEL_GROUP_ADMIN, "Administration Menu", "586");
+ navimanagement.addMainStructure("adminModuleUser", null, 14, "125", LEVEL_GROUP_ADMIN, "Administration of Users", admin.getId(), "1454");
+ navimanagement.addMainStructure("adminModuleConnections", null, 15, "597", LEVEL_ADMIN, "Aministration of Connections", admin.getId(), "1455");
+ navimanagement.addMainStructure("adminModuleOrg", null, 16, "127", LEVEL_GROUP_ADMIN, "Administration of Groups", admin.getId(), "1456");
+ navimanagement.addMainStructure("adminModuleRoom", null, 17, "186", LEVEL_GROUP_ADMIN, "Administration of Rooms", admin.getId(), "1457");
+ navimanagement.addMainStructure("adminModuleConfiguration", null, 18, "263", LEVEL_ADMIN, "Administration of Configuration", admin.getId(), "1458");
+ navimanagement.addMainStructure("adminModuleLanguages", null, 19, "348", LEVEL_ADMIN, "Administration of Languages", admin.getId(), "1459");
+ navimanagement.addMainStructure("adminModuleLDAP", null, 20, "1103", LEVEL_ADMIN, "Administration of LDAP Configs", admin.getId(), "1460");
+ navimanagement.addMainStructure("adminModuleOAuth", null, 21, "1571", LEVEL_ADMIN, "Administration of OAuth2 servers", admin.getId(), "1572");
+ navimanagement.addMainStructure("adminModuleBackup", null, 22, "367", LEVEL_ADMIN, "Administration of Backups", admin.getId(), "1461");
+ navimanagement.addMainStructure("adminModuleServers", null, 23, "1498", LEVEL_ADMIN, "Administration of Servers", admin.getId(), "1499");
+ navimanagement.addMainStructure("adminModuleEmail", null, 24, "main.menu.admin.email", LEVEL_ADMIN, "Administration of Emails", admin.getId(), "main.menu.admin.email.desc");
log.debug("MainMenu ADDED");
}
Modified: openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java (original)
+++ openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java Mon Nov 7 03:43:30 2016
@@ -47,6 +47,9 @@ public class OpenmeetingsVariables {
public static final String CONFIG_CALENDAR_FIRST_DAY = "calendar.firstday";
public static final String CONFIG_DEFAULT_GROUP_ID = "default_group_id";
public static final String CONFIG_GOOGLE_ANALYTICS_CODE = "google.analytics.code";
+ public static final int LEVEL_USER = 1;
+ public static final int LEVEL_GROUP_ADMIN = 2;
+ public static final int LEVEL_ADMIN = 3;
public static int DEFAULT_MINUTES_REMINDER_SEND = 15;
public static String DEFAULT_BASE_URL = "http://localhost:5080/openmeetings/";
Modified: openmeetings/application/trunk/openmeetings-web/pom.xml
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/pom.xml?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/pom.xml (original)
+++ openmeetings/application/trunk/openmeetings-web/pom.xml Mon Nov 7 03:43:30 2016
@@ -382,11 +382,6 @@
</dependency>
<dependency>
<groupId>org.apache.wicket</groupId>
- <artifactId>wicket-native-websocket-core</artifactId>
- <version>${wicket.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.wicket</groupId>
<artifactId>wicket-native-websocket-javax</artifactId>
<version>${wicket.version}</version>
</dependency>
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminPanel.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/AdminPanel.java Mon Nov 7 03:43:30 2016
@@ -24,7 +24,8 @@ import org.apache.wicket.authroles.autho
@AuthorizeInstantiation("Admin")
public abstract class AdminPanel extends BasePanel {
private static final long serialVersionUID = 1L;
- protected final static String ROW_CLASS = "clickable ui-widget-content %s";
+ protected final static String BASE_ROW_CLASS = "ui-widget-content";
+ protected final static String ROW_CLASS = BASE_ROW_CLASS + " clickable";
public AdminPanel(String id) {
super(id);
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/groups/GroupsPanel.java Mon Nov 7 03:43:30 2016
@@ -18,7 +18,17 @@
*/
package org.apache.openmeetings.web.admin.groups;
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.user.Group;
import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.web.admin.AdminPanel;
@@ -31,6 +41,7 @@ import org.apache.openmeetings.web.data.
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
@@ -43,6 +54,7 @@ import org.apache.wicket.markup.repeater
* @author swagner
*
*/
+@AuthorizeInstantiation({"Admin", "GroupAdmin"})
public class GroupsPanel extends AdminPanel {
private static final long serialVersionUID = 1L;
private GroupForm form;
@@ -57,7 +69,16 @@ public class GroupsPanel extends AdminPa
public GroupsPanel(String id) {
super(id);
final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
-
+ final boolean isGroupAdmin = hasGroupAdminLevel(getRights());
+ final Set<Long> groupIds = new HashSet<>();
+ if (isGroupAdmin) {
+ for (GroupUser gu : getBean(UserDao.class).get(getUserId()).getGroupUsers()) {
+ if (gu.isModerator()) {
+ groupIds.add(gu.getGroup().getId());
+ }
+ }
+ }
+
//Adding the Group Form
form = new GroupForm("form", listContainer, new Group());
add(form);
@@ -68,22 +89,26 @@ public class GroupsPanel extends AdminPa
@Override
protected void populateItem(Item<Group> item) {
- final Group o = item.getModelObject();
+ final Group g = item.getModelObject();
item.add(new Label("id"));
item.add(new Label("name"));
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.hideNewRecord();
- form.setModelObject(o);
- form.updateView(target);
- target.add(listContainer);
- target.appendJavaScript("groupsInit();");
- }
- });
- item.add(AttributeModifier.append("class", getRowClass(o.getId(), form.getModelObject().getId())));
+ if (isGroupAdmin && groupIds.contains(g.getId())) {
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.hideNewRecord();
+ form.setModelObject(g);
+ form.updateView(target);
+ target.add(listContainer);
+ target.appendJavaScript("groupsInit();");
+ }
+ });
+ item.add(AttributeModifier.append("class", getRowClass(g.getId(), form.getModelObject().getId())));
+ } else {
+ item.add(AttributeModifier.append("class", BASE_ROW_CLASS));
+ }
}
};
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java Mon Nov 7 03:43:30 2016
@@ -32,6 +32,7 @@ import org.apache.openmeetings.web.data.
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.markup.head.IHeaderResponse;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
@@ -40,6 +41,7 @@ import org.apache.wicket.markup.html.bas
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
+@AuthorizeInstantiation({"Admin", "GroupAdmin"})
public class RoomsPanel extends AdminPanel {
private static final long serialVersionUID = -1L;
private final static JavaScriptResourceReference ROOM_FUNCTIONS = new JavaScriptResourceReference(RoomsPanel.class, "room.js");
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java Mon Nov 7 03:43:30 2016
@@ -203,6 +203,9 @@ public class UserForm extends AdminBaseF
@Override
public void query(String term, int page, Response<Right> response) {
for (Right r : Right.values()) {
+ if (Right.GroupAdmin == r) {
+ continue;
+ }
if (Strings.isEmpty(term) || r.name().contains(term)) {
response.add(r);
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UsersPanel.java Mon Nov 7 03:43:30 2016
@@ -34,6 +34,7 @@ import org.apache.openmeetings.web.data.
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
@@ -44,6 +45,7 @@ import com.googlecode.wicket.jquery.ui.w
import com.googlecode.wicket.jquery.ui.widget.dialog.DialogIcon;
import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+@AuthorizeInstantiation({"Admin", "GroupAdmin"})
public class UsersPanel extends AdminPanel {
private static final long serialVersionUID = 1L;
final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java Mon Nov 7 03:43:30 2016
@@ -56,9 +56,11 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.server.RemoteSessionObject;
import org.apache.openmeetings.db.entity.server.SOAPLogin;
import org.apache.openmeetings.db.entity.server.Sessiondata;
+import org.apache.openmeetings.db.entity.user.GroupUser;
import org.apache.openmeetings.db.entity.user.User;
import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.db.util.AuthLevelUtil;
import org.apache.openmeetings.db.util.TimezoneUtil;
import org.apache.openmeetings.util.OmException;
import org.apache.openmeetings.web.user.dashboard.MyRoomsWidget;
@@ -283,7 +285,16 @@ public class WebSession extends Abstract
}
userId = u.getId();
if (rights == null || rights.isEmpty()) {
- this.rights = Collections.unmodifiableSet(u.getRights());
+ Set<Right> r = new HashSet<>(u.getRights());
+ if (!AuthLevelUtil.hasAdminLevel(r)) {
+ for (GroupUser gu : u.getGroupUsers()) {
+ if (gu.isModerator()) {
+ r.add(Right.GroupAdmin);
+ break;
+ }
+ }
+ }
+ this.rights = Collections.unmodifiableSet(r);
} else {
this.rights = Collections.unmodifiableSet(rights);
}
Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/MainPanel.java Mon Nov 7 03:43:30 2016
@@ -19,6 +19,9 @@
package org.apache.openmeetings.web.common;
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_ADMIN;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_GROUP_ADMIN;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_USER;
import static org.apache.openmeetings.web.app.Application.addOnlineUser;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.Application.removeOnlineUser;
@@ -30,16 +33,19 @@ import static org.apache.openmeetings.we
import static org.apache.openmeetings.web.util.OmUrlFragment.PROFILE_MESSAGES;
import static org.apache.openmeetings.web.util.OmUrlFragment.getPanel;
import static org.apache.wicket.ajax.attributes.CallbackParameter.explicit;
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasAdminLevel;
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import org.apache.openmeetings.db.dao.basic.NavigationDao;
import org.apache.openmeetings.db.entity.basic.Naviglobal;
import org.apache.openmeetings.db.entity.basic.Navimain;
import org.apache.openmeetings.db.entity.user.PrivateMessage;
-import org.apache.openmeetings.db.util.AuthLevelUtil;
+import org.apache.openmeetings.db.entity.user.User.Right;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.app.Client;
import org.apache.openmeetings.web.app.WebSession;
@@ -288,9 +294,14 @@ public class MainPanel extends Panel {
});
}
+ private int getLevel() {
+ Set<Right> r = WebSession.getRights();
+ return hasAdminLevel(r) ? LEVEL_ADMIN : (hasGroupAdminLevel(r) ? LEVEL_GROUP_ADMIN : LEVEL_USER);
+ }
+
private List<IMenuItem> getMainMenu() {
List<IMenuItem> menu = new ArrayList<>();
- for (Naviglobal gl : getBean(NavigationDao.class).getMainMenu(AuthLevelUtil.hasAdminLevel(WebSession.getRights()))) {
+ for (Naviglobal gl : getBean(NavigationDao.class).getMainMenu(getLevel())) {
List<IMenuItem> l = new ArrayList<>();
for (Navimain nm : gl.getMainnavi()) {
l.add(new MainMenuItem(nm) {
Modified: openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java?rev=1768421&r1=1768420&r2=1768421&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/test/java/org/apache/openmeetings/test/navi/TestNavi.java Mon Nov 7 03:43:30 2016
@@ -18,6 +18,9 @@
*/
package org.apache.openmeetings.test.navi;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_ADMIN;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_GROUP_ADMIN;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.LEVEL_USER;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -31,29 +34,44 @@ import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
public class TestNavi extends AbstractJUnitDefaults {
-
@Autowired
private NavigationDao navimanagement;
-
+
+ private List<Naviglobal> testGetNavi(int level) {
+ List<Naviglobal> ll = navimanagement.getMainMenu(level);
+
+ assertTrue("GlobalNavi size should be greater than zero: " + ll.size(), ll.size() > 0);
+
+ for (Naviglobal navigl : ll) {
+ assertNotNull("Naviglobal retrieved should not be null", navigl);
+ assertTrue(String.format("Naviglobal retrieved should have level not greater than: %s, has: ", level, navigl.getLevelId()), navigl.getLevelId() <= level);
+
+ assertNotNull("Naviglobal retrieved should have Navimain entries", navigl.getMainnavi());
+ for (Navimain navim : navigl.getMainnavi()) {
+ assertNotNull("Navimain retrieved should not be null", navim);
+ assertTrue(String.format("Navimain retrieved should have level not greater than: %s, has: ", level, navim.getLevelId()), navim.getLevelId() <= level);
+ }
+ }
+ return ll;
+ }
+
@Test
- public void testGetNavi(){
-
- List<Naviglobal> ll = navimanagement.getMainMenu(true);
-
- assertTrue("GlobalNavi size should be greater than zero: " + ll.size(), ll.size() > 0);
- System.out.println("NaviGlobal size: " + ll.size());
-
- for (Naviglobal navigl : ll) {
- assertNotNull("Naviglobal retrieved should not be null", navigl);
- System.out.println("Naviglobal label: " + navigl.getLevelId());
-
- assertNotNull("Naviglobal retrieved should have Navimain entries", navigl.getMainnavi());
- for (Navimain navim : navigl.getMainnavi()) {
- assertNotNull("Navimain retrieved should not be null", navim);
- System.out.println("-->" + navim.getLabelId());
- }
- }
-
+ public void testGetUserNavi() {
+ testGetNavi(LEVEL_USER);
}
+ @Test
+ public void testGetGroupAdminNavi() {
+ testGetNavi(LEVEL_GROUP_ADMIN);
+ }
+
+ @Test
+ public void testGetAdminNavi() {
+ List<Naviglobal> menu = testGetNavi(LEVEL_ADMIN);
+ for (Naviglobal ng : menu) {
+ if (ng.getLevelId() == LEVEL_ADMIN) {
+ assertTrue("Admin menu should conatin more than 4 items: " + ng.getMainnavi().size(), ng.getMainnavi().size() > 4);
+ }
+ }
+ }
}