Repository: openmeetings
Updated Branches:
  refs/heads/master 1fef09d04 -> 51d669a97


[OPENMEETINGS-1714] more issues are fixed


Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo
Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/51d669a9
Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/51d669a9
Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/51d669a9

Branch: refs/heads/master
Commit: 51d669a977d389bb90817049e12ee38eecb96c36
Parents: 1fef09d
Author: Maxim Solodovnik <[email protected]>
Authored: Fri Oct 13 23:01:00 2017 +0700
Committer: Maxim Solodovnik <[email protected]>
Committed: Fri Oct 13 23:01:00 2017 +0700

----------------------------------------------------------------------
 .../openmeetings/core/service/MainService.java  | 76 +++++++++++---------
 1 file changed, 42 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/openmeetings/blob/51d669a9/openmeetings-core/src/main/java/org/apache/openmeetings/core/service/MainService.java
----------------------------------------------------------------------
diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/service/MainService.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/service/MainService.java
index 5976c2c..bfabbd0 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/service/MainService.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/service/MainService.java
@@ -46,42 +46,50 @@ public class MainService {
        // External User Types
        public static final String EXTERNAL_USER_TYPE_LDAP = "LDAP";
 
-       public boolean isRoomAllowedToUser(Room r, User u) {
-               boolean allowed = false;
-               if (r != null) {
-                       if (r.isAppointment()) {
-                               Appointment a = 
appointmentDao.getByRoom(r.getId());
-                               if (a != null && !a.isDeleted()) {
-                                       allowed = 
a.getOwner().getId().equals(u.getId());
-                                       log.debug("[loginWicket] appointed 
room, isOwner ? " + allowed);
-                                       if (!allowed) {
-                                               for (MeetingMember mm : 
a.getMeetingMembers()) {
-                                                       if 
(mm.getUser().getId().equals(u.getId())) {
-                                                               allowed = true;
-                                                               break;
-                                                       }
-                                               }
-                                       }
-                                       // TODO restrict by time???
-                               }
-                       } else {
-                               allowed = r.getIspublic() || (r.getOwnerId() != 
null && r.getOwnerId().equals(u.getId()));
-                               log.debug("[loginWicket] public ? " + 
r.getIspublic() + ", ownedId ? " + r.getOwnerId() + " " + allowed);
-                               if (!allowed && null != r.getGroups()) {
-                                       for (RoomGroup ro : r.getGroups()) {
-                                               for (GroupUser ou : 
u.getGroupUsers()) {
-                                                       if 
(ro.getGroup().getId().equals(ou.getGroup().getId())) {
-                                                               allowed = true;
-                                                               break;
-                                                       }
-                                               }
-                                               if (allowed) {
-                                                       break;
-                                               }
-                                       }
+       private static boolean checkAppointment(Appointment a, User u) {
+               if (a == null || a.isDeleted()) {
+                       return false;
+               }
+               if (a.getOwner().getId().equals(u.getId())) {
+                       log.debug("[isRoomAllowedToUser] appointed room, Owner 
entered");
+                       return true;
+               }
+               for (MeetingMember mm : a.getMeetingMembers()) {
+                       if (mm.getUser().getId().equals(u.getId())) {
+                               return true;
+                       }
+               }
+               // TODO restrict by time???
+               return false;
+       }
+
+       private static boolean checkGroups(Room r, User u) {
+               if (null == r.getGroups()) { //u.getGroupUsers() can't be null 
due to user was able to login
+                       return false;
+               }
+               for (RoomGroup ro : r.getGroups()) {
+                       for (GroupUser ou : u.getGroupUsers()) {
+                               if 
(ro.getGroup().getId().equals(ou.getGroup().getId())) {
+                                       return true;
                                }
                        }
                }
-               return allowed;
+               return false;
+       }
+
+       public boolean isRoomAllowedToUser(Room r, User u) {
+               if (r == null) {
+                       return false;
+               }
+               if (r.isAppointment()) {
+                       Appointment a = appointmentDao.getByRoom(r.getId());
+                       return checkAppointment(a, u);
+               } else {
+                       if (r.getIspublic() || (r.getOwnerId() != null && 
r.getOwnerId().equals(u.getId()))) {
+                               log.debug("[isRoomAllowedToUser] public ? {} , 
ownedId ? {} ALLOWED", r.getIspublic(), r.getOwnerId());
+                               return true;
+                       }
+                       return checkGroups(r, u);
+               }
        }
 }

Reply via email to