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