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 2017/03/06 04:04:02 UTC

svn commit: r1785586 - in /openmeetings/application: branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/ branches/3.2.x/openmeeti...

Author: solomax
Date: Mon Mar  6 04:04:02 2017
New Revision: 1785586

URL: http://svn.apache.org/viewvc?rev=1785586&view=rev
Log:
[OPENMEETINGS-1581] conference room seems to be fixed

Modified:
    openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
    openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java

Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1785586&r1=1785585&r2=1785586&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Mon Mar  6 04:04:02 2017
@@ -1140,9 +1140,9 @@ public class ScopeApplicationAdapter ext
 				client.setIsSuperModerator(isSuperModerator);
 				client.setIsMod(isSuperModerator);
 			} else {
-				Room.Right rr = AuthLevelUtil.getRoomRight(u, r, r.isAppointment() ? appointmentDao.getByRoom(r.getId()) : null, roomClients.size());
-				client.setIsSuperModerator(rr == Room.Right.superModerator);
-				client.setIsMod(becomeModerator || rr == Room.Right.moderator);
+				Set<Room.Right> rr = AuthLevelUtil.getRoomRight(u, r, r.isAppointment() ? appointmentDao.getByRoom(r.getId()) : null, roomClients.size());
+				client.setIsSuperModerator(rr.contains(Room.Right.superModerator));
+				client.setIsMod(becomeModerator || rr.contains(Room.Right.moderator));
 			}
 			if (client.getIsMod()) {
 				// Update the Client List

Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java?rev=1785586&r1=1785585&r2=1785586&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java Mon Mar  6 04:04:02 2017
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.entity.basic;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
@@ -132,6 +133,18 @@ public class Client implements IDataProv
 		return rights.contains(Right.superModerator) || rights.contains(Right.moderator) ? true : rights.contains(right);
 	}
 
+	public void allow(Right... _rights) {
+		allow(Arrays.asList(_rights));
+	}
+
+	public void allow(Iterable<Right> _rights) {
+		for (Right right : _rights) {
+			if (!hasRight(right)) {
+				rights.add(right);
+			}
+		}
+	}
+
 	public Set<Activity> getActivities() {
 		return activities;
 	}

Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java?rev=1785586&r1=1785585&r2=1785586&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/AuthLevelUtil.java Mon Mar  6 04:04:02 2017
@@ -20,6 +20,7 @@ package org.apache.openmeetings.db.util;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
+import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.openmeetings.db.entity.calendar.Appointment;
@@ -33,58 +34,62 @@ import org.slf4j.Logger;
 
 public class AuthLevelUtil {
 	private static final Logger log = Red5LoggerFactory.getLogger(AuthLevelUtil.class, webAppRootKey);
-	
+
 	private static boolean check(Set<User.Right> rights, User.Right level) {
 		boolean result = rights.contains(level);
 		log.debug(String.format("Level %s :: %s", level, result ? "[GRANTED]" : "[DENIED]"));
 		return result;
 	}
-	
+
 	public static boolean hasUserLevel(Set<User.Right> rights) {
 		return check(rights, User.Right.Room);
 	}
 
-	public static Room.Right getRoomRight(User u, Room r, Appointment a, int userCount) {
-		Room.Right result = null;
+	public static Set<Room.Right> getRoomRight(User u, Room r, Appointment a, int userCount) {
+		Set<Room.Right> result = new HashSet<>();
 		if (u == null) {
 			return result;
 		}
 		if (hasAdminLevel(u.getRights())) {
 			//admin user get superModerator level, no-one can kick him/her
-			result = Room.Right.superModerator;
+			result.add(Room.Right.superModerator);
 		} else if (r.isAppointment() && a != null) {
 			// appointment owner is super moderator
 			if (u.getId().equals(a.getOwner().getId())) {
-				result = Room.Right.superModerator;
+				result.add(Room.Right.superModerator);
 			}
 		}
-		if (result == null) {
+		if (result.isEmpty()) {
 			if (!r.isModerated() && 1 == userCount) {
 				//room is not moderated, first user is moderator!
-				result = Room.Right.moderator;
+				result.add(Room.Right.moderator);
 			}
 			//performing loop here to set possible 'superModerator' right
 			for (RoomModerator rm : r.getModerators()) {
 				if (u.getId().equals(rm.getUser().getId())) {
-					result = rm.isSuperModerator() ? Room.Right.superModerator : Room.Right.moderator;
+					result.add(rm.isSuperModerator() ? Room.Right.superModerator : Room.Right.moderator);
 					break;
 				}
 			}
 			//no need to loop if client is moderator
-			if (result == null && !r.getRoomGroups().isEmpty()) {
+			if (result.isEmpty() && !r.getRoomGroups().isEmpty()) {
 				for (RoomGroup rg : r.getRoomGroups()) {
 					for (GroupUser gu : u.getGroupUsers()) {
 						if (gu.getGroup().getId().equals(rg.getGroup().getId()) && gu.isModerator()) {
-							result = Room.Right.moderator;
+							result.add(Room.Right.moderator);
 							break;
 						}
 					}
-					if (result != null) {
+					if (!result.isEmpty()) {
 						break;
 					}
 				}
 			}
 		}
+		if (Room.Type.conference == r.getType() && !result.contains(Room.Right.video)) {
+			result.add(Room.Right.audio);
+			result.add(Room.Right.video);
+		}
 		return result;
 	}
 

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1785586&r1=1785585&r2=1785586&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Mon Mar  6 04:04:02 2017
@@ -30,6 +30,7 @@ import static org.apache.wicket.ajax.att
 
 import java.util.Calendar;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.UUID;
 
 import org.apache.directory.api.util.Strings;
@@ -408,9 +409,9 @@ public class RoomPanel extends BasePanel
 				c.getRights().add(Right.superModerator);
 			} else {
 				//FIXME TODO !!! c.getUser != getUserId
-				Right rr = AuthLevelUtil.getRoomRight(c.getUser(), r, r.isAppointment() ? getBean(AppointmentDao.class).getByRoom(r.getId()) : null, getRoomClients(r.getId()).size());
-				if (rr != null) {
-					c.getRights().add(rr);
+				Set<Right> rr = AuthLevelUtil.getRoomRight(c.getUser(), r, r.isAppointment() ? getBean(AppointmentDao.class).getByRoom(r.getId()) : null, getRoomClients(r.getId()).size());
+				if (!rr.isEmpty()) {
+					c.allow(rr);
 				}
 			}
 		}
@@ -520,9 +521,7 @@ public class RoomPanel extends BasePanel
 	}
 
 	public void allowRight(AjaxRequestTarget target, Client client, Right... rights) {
-		for (Right right : rights) {
-			client.getRights().add(right);
-		}
+		client.allow(rights);
 		broadcast(target, client);
 	}
 

Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java?rev=1785586&r1=1785585&r2=1785586&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java (original)
+++ openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/red5/ScopeApplicationAdapter.java Mon Mar  6 04:04:02 2017
@@ -1140,9 +1140,9 @@ public class ScopeApplicationAdapter ext
 				client.setIsSuperModerator(isSuperModerator);
 				client.setIsMod(isSuperModerator);
 			} else {
-				Room.Right rr = AuthLevelUtil.getRoomRight(u, r, r.isAppointment() ? appointmentDao.getByRoom(r.getId()) : null, roomClients.size());
-				client.setIsSuperModerator(rr == Room.Right.superModerator);
-				client.setIsMod(becomeModerator || rr == Room.Right.moderator);
+				Set<Room.Right> rr = AuthLevelUtil.getRoomRight(u, r, r.isAppointment() ? appointmentDao.getByRoom(r.getId()) : null, roomClients.size());
+				client.setIsSuperModerator(rr.contains(Room.Right.superModerator));
+				client.setIsMod(becomeModerator || rr.contains(Room.Right.moderator));
 			}
 			if (client.getIsMod()) {
 				// Update the Client List

Modified: openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java?rev=1785586&r1=1785585&r2=1785586&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java (original)
+++ openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java Mon Mar  6 04:04:02 2017
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.entity.basic;
 
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.Set;
@@ -132,6 +133,18 @@ public class Client implements IDataProv
 		return rights.contains(Right.superModerator) || rights.contains(Right.moderator) ? true : rights.contains(right);
 	}
 
+	public void allow(Right... _rights) {
+		allow(Arrays.asList(_rights));
+	}
+
+	public void allow(Iterable<Right> _rights) {
+		for (Right right : _rights) {
+			if (!hasRight(right)) {
+				rights.add(right);
+			}
+		}
+	}
+
 	public Set<Activity> getActivities() {
 		return activities;
 	}

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=1785586&r1=1785585&r2=1785586&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 Mar  6 04:04:02 2017
@@ -20,6 +20,7 @@ package org.apache.openmeetings.db.util;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
+import java.util.HashSet;
 import java.util.Set;
 
 import org.apache.openmeetings.db.entity.calendar.Appointment;
@@ -33,58 +34,62 @@ import org.slf4j.Logger;
 
 public class AuthLevelUtil {
 	private static final Logger log = Red5LoggerFactory.getLogger(AuthLevelUtil.class, webAppRootKey);
-	
+
 	private static boolean check(Set<User.Right> rights, User.Right level) {
 		boolean result = rights.contains(level);
 		log.debug(String.format("Level %s :: %s", level, result ? "[GRANTED]" : "[DENIED]"));
 		return result;
 	}
-	
+
 	public static boolean hasUserLevel(Set<User.Right> rights) {
 		return check(rights, User.Right.Room);
 	}
 
-	public static Room.Right getRoomRight(User u, Room r, Appointment a, int userCount) {
-		Room.Right result = null;
+	public static Set<Room.Right> getRoomRight(User u, Room r, Appointment a, int userCount) {
+		Set<Room.Right> result = new HashSet<>();
 		if (u == null) {
 			return result;
 		}
 		if (hasAdminLevel(u.getRights())) {
 			//admin user get superModerator level, no-one can kick him/her
-			result = Room.Right.superModerator;
+			result.add(Room.Right.superModerator);
 		} else if (r.isAppointment() && a != null) {
 			// appointment owner is super moderator
 			if (u.getId().equals(a.getOwner().getId())) {
-				result = Room.Right.superModerator;
+				result.add(Room.Right.superModerator);
 			}
 		}
-		if (result == null) {
+		if (result.isEmpty()) {
 			if (!r.isModerated() && 1 == userCount) {
 				//room is not moderated, first user is moderator!
-				result = Room.Right.moderator;
+				result.add(Room.Right.moderator);
 			}
 			//performing loop here to set possible 'superModerator' right
 			for (RoomModerator rm : r.getModerators()) {
 				if (u.getId().equals(rm.getUser().getId())) {
-					result = rm.isSuperModerator() ? Room.Right.superModerator : Room.Right.moderator;
+					result.add(rm.isSuperModerator() ? Room.Right.superModerator : Room.Right.moderator);
 					break;
 				}
 			}
 			//no need to loop if client is moderator
-			if (result == null && !r.getRoomGroups().isEmpty()) {
+			if (result.isEmpty() && !r.getRoomGroups().isEmpty()) {
 				for (RoomGroup rg : r.getRoomGroups()) {
 					for (GroupUser gu : u.getGroupUsers()) {
 						if (gu.getGroup().getId().equals(rg.getGroup().getId()) && gu.isModerator()) {
-							result = Room.Right.moderator;
+							result.add(Room.Right.moderator);
 							break;
 						}
 					}
-					if (result != null) {
+					if (!result.isEmpty()) {
 						break;
 					}
 				}
 			}
 		}
+		if (Room.Type.conference == r.getType() && !result.contains(Room.Right.video)) {
+			result.add(Room.Right.audio);
+			result.add(Room.Right.video);
+		}
 		return result;
 	}
 

Modified: openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1785586&r1=1785585&r2=1785586&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java (original)
+++ openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java Mon Mar  6 04:04:02 2017
@@ -30,6 +30,7 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Calendar;
 import java.util.Map.Entry;
+import java.util.Set;
 import java.util.UUID;
 
 import org.apache.directory.api.util.Strings;
@@ -420,9 +421,9 @@ public class RoomPanel extends BasePanel
 				c.getRights().add(Right.superModerator);
 			} else {
 				//FIXME TODO !!! c.getUser != getUserId
-				Right rr = AuthLevelUtil.getRoomRight(c.getUser(), r, r.isAppointment() ? getBean(AppointmentDao.class).getByRoom(r.getId()) : null, getRoomClients(r.getId()).size());
-				if (rr != null) {
-					c.getRights().add(rr);
+				Set<Right> rr = AuthLevelUtil.getRoomRight(c.getUser(), r, r.isAppointment() ? getBean(AppointmentDao.class).getByRoom(r.getId()) : null, getRoomClients(r.getId()).size());
+				if (!rr.isEmpty()) {
+					c.allow(rr);
 				}
 			}
 		}
@@ -531,9 +532,7 @@ public class RoomPanel extends BasePanel
 	}
 
 	public void allowRight(AjaxRequestTarget target, Client client, Right... rights) {
-		for (Right right : rights) {
-			client.getRights().add(right);
-		}
+		client.allow(rights);
 		broadcast(target, client);
 	}