Author: solomax
Date: Tue Jul 26 05:34:05 2016
New Revision: 1754069

URL: http://svn.apache.org/viewvc?rev=1754069&view=rev
Log:
[OPENMEETINGS-1438] recording rights are being checked correctly

Modified:
    
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
    
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java

Modified: 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java?rev=1754069&r1=1754068&r2=1754069&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
 (original)
+++ 
openmeetings/application/branches/3.1.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
 Tue Jul 26 05:34:05 2016
@@ -33,6 +33,7 @@ import javax.servlet.http.HttpServletRes
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
@@ -84,19 +85,24 @@ public abstract class RecordingResourceR
        abstract File getFile(Recording r);
        
        private static Recording getRecording(Long id) {
+               log.debug("Recording with id {} is requested", id);
                Recording r = getBean(RecordingDao.class).get(id);
-               // TODO should we process public?
-               // || r.getOwnerId() == 0 || r.getParentFileExplorerItemId() == 
null || r.getParentFileExplorerItemId() == 0
-               if (r == null) {
+               if (r == null || r.getType() == Type.Folder || r.isDeleted()) {
+                       return null;
+               }
+               //TODO should we check parentId here
+               if (r.getOwnerId() == null && r.getGroupId() == null) {
+                       //public
                        return r;
                }
-               if (r.getOwnerId() == null || 
getUserId().equals(r.getOwnerId())) {
+               if (r.getOwnerId() != null && 
getUserId().equals(r.getOwnerId())) {
+                       //own
                        return r;
                }
-               if (r.getGroupId() == null || 
getBean(GroupUserDao.class).isUserInGroup(r.getGroupId(), getUserId())) {
+               if (r.getGroupId() != null && 
getBean(GroupUserDao.class).isUserInGroup(r.getGroupId(), getUserId())) {
                        return r;
                }
-               //TODO external group check was added for plugin recording 
download
+               //external group check was added for plugin recording download
                String extType = getExternalType();
                if (extType != null) {
                        User creator = 
getBean(UserDao.class).get(r.getInsertedBy());

Modified: 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java?rev=1754069&r1=1754068&r2=1754069&view=diff
==============================================================================
--- 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
 (original)
+++ 
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
 Tue Jul 26 05:34:05 2016
@@ -28,6 +28,7 @@ import static org.red5.logging.Red5Logge
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
@@ -75,22 +76,26 @@ public abstract class RecordingResourceR
        }
        
        private static Recording getRecording(Long id) {
+               log.debug("Recording with id {} is requested", id);
                Recording r = getBean(RecordingDao.class).get(id);
-               // TODO should we process public?
-               // || r.getOwnerId() == 0 || r.getParentFileExplorerItemId() == 
null || r.getParentFileExplorerItemId() == 0
-               if (r == null) {
+               if (r == null || r.getType() == Type.Folder || r.isDeleted()) {
+                       return null;
+               }
+               //TODO should we check parentId here
+               if (r.getOwnerId() == null && r.getGroupId() == null) {
+                       //public
                        return r;
                }
-               if (r.getOwnerId() == null || 
getUserId().equals(r.getOwnerId())) {
+               if (r.getOwnerId() != null && 
getUserId().equals(r.getOwnerId())) {
+                       //own
                        return r;
                }
-               if (r.getGroupId() == null || 
getBean(GroupUserDao.class).isUserInGroup(r.getGroupId(), getUserId())) {
+               if (r.getGroupId() != null && 
getBean(GroupUserDao.class).isUserInGroup(r.getGroupId(), getUserId())) {
                        return r;
                }
-               //TODO external group check was added for plugin recording 
download
+               //external group check was added for plugin recording download
                String extType = getExternalType();
                if (extType != null) {
-                       log.debug("External recording requested: " + extType);
                        User creator = 
getBean(UserDao.class).get(r.getInsertedBy());
                        if (extType.equals(creator.getExternalType())) {
                                return r;

Modified: 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
URL: 
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java?rev=1754069&r1=1754068&r2=1754069&view=diff
==============================================================================
--- 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
 (original)
+++ 
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
 Tue Jul 26 05:34:05 2016
@@ -28,6 +28,7 @@ import static org.red5.logging.Red5Logge
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.GroupUserDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.db.entity.record.Recording;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.web.app.WebSession;
@@ -75,22 +76,26 @@ public abstract class RecordingResourceR
        }
        
        private static Recording getRecording(Long id) {
+               log.debug("Recording with id {} is requested", id);
                Recording r = getBean(RecordingDao.class).get(id);
-               // TODO should we process public?
-               // || r.getOwnerId() == 0 || r.getParentFileExplorerItemId() == 
null || r.getParentFileExplorerItemId() == 0
-               if (r == null) {
+               if (r == null || r.getType() == Type.Folder || r.isDeleted()) {
+                       return null;
+               }
+               //TODO should we check parentId here
+               if (r.getOwnerId() == null && r.getGroupId() == null) {
+                       //public
                        return r;
                }
-               if (r.getOwnerId() == null || 
getUserId().equals(r.getOwnerId())) {
+               if (r.getOwnerId() != null && 
getUserId().equals(r.getOwnerId())) {
+                       //own
                        return r;
                }
-               if (r.getGroupId() == null || 
getBean(GroupUserDao.class).isUserInGroup(r.getGroupId(), getUserId())) {
+               if (r.getGroupId() != null && 
getBean(GroupUserDao.class).isUserInGroup(r.getGroupId(), getUserId())) {
                        return r;
                }
-               //TODO external group check was added for plugin recording 
download
+               //external group check was added for plugin recording download
                String extType = getExternalType();
                if (extType != null) {
-                       log.debug("External recording requested: " + extType);
                        User creator = 
getBean(UserDao.class).get(r.getInsertedBy());
                        if (extType.equals(creator.getExternalType())) {
                                return r;


Reply via email to