[evolvis-commits] r15142: RBAC for forum/tracker/pm factories (it even makes the code simpler )

mirabilos at evolvis.org mirabilos at evolvis.org
Mon Feb 28 23:46:29 CET 2011


Author: mirabilos
Date: 2011-02-28 23:46:29 +0100 (Mon, 28 Feb 2011)
New Revision: 15142

Modified:
   trunk/gforge_base/evolvisforge-5.1/gforge/common/forum/ForumFactory.class.php
   trunk/gforge_base/evolvisforge-5.1/gforge/common/pm/ProjectGroupFactory.class.php
   trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactTypeFactory.class.php
Log:
RBAC for forum/tracker/pm factories (it even makes the code simpler)

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/forum/ForumFactory.class.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/forum/ForumFactory.class.php	2011-02-28 22:46:26 UTC (rev 15141)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/forum/ForumFactory.class.php	2011-02-28 22:46:29 UTC (rev 15142)
@@ -82,46 +82,11 @@
 			return $this->forums;
 		}
 
-		
-		if (session_loggedin()) {
-			$perm =& $this->Group->getPermission ();
-			if (!$perm || !is_object($perm) || !$perm->isMember()) {
-				$result = db_query_params ('SELECT * FROM forum_group_list_vw
+		$result = db_query_params ('SELECT * FROM forum_group_list_vw
 WHERE group_id=$1
-AND is_public=1
 ORDER BY group_forum_id',
-							   array ($this->Group->getID())) ;
-			} else {
-				if (forge_check_perm ('forum_admin', $this->Group->getID())) {
-					$result = db_query_params ('SELECT * FROM forum_group_list_vw
-WHERE group_id=$1
-AND is_public < 3
-ORDER BY group_forum_id',
-								   array ($this->Group->getID())) ;
-				} else {
-					$result = db_query_params ('SELECT * FROM forum_group_list_vw
-WHERE group_id=$1
-AND is_public < 3
-AND group_forum_id IN (SELECT role_setting.ref_id
-                         FROM role_setting, user_group
-                         WHERE role_setting.section_name = $2
-                         AND role_setting.value::integer >= 0
-                         AND role_setting.ref_id=forum_group_list_vw.group_forum_id
-			 AND user_group.role_id = role_setting.role_id
-			 AND user_group.user_id=$3)
-ORDER BY group_forum_id',
-								   array ($this->Group->getID(),
-									  'forum',
-									  user_getid())) ;
-				}
-			}
-		} else {
-			$result = db_query_params ('SELECT * FROM forum_group_list_vw
-WHERE group_id=$1
-AND is_public=1
-ORDER BY group_forum_id',
-						   array ($this->Group->getID())) ;
-		}
+					   array ($this->Group->getID())) ;
+	}
 		
 		$rows = db_numrows($result);
 		
@@ -130,7 +95,9 @@
 			$this->forums = false;
 		} else {
 			while ($arr = db_fetch_array($result)) {
-				$this->forums[] = new Forum($this->Group, $arr['group_forum_id'], $arr);
+				if (forge_check_perm ('forum', $arr['group_forum_id'], 'read')) {
+					$this->forums[] = new Forum($this->Group, $arr['group_forum_id'], $arr);
+				}
 			}
 		}
 		return $this->forums;

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/pm/ProjectGroupFactory.class.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/pm/ProjectGroupFactory.class.php	2011-02-28 22:46:26 UTC (rev 15141)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/pm/ProjectGroupFactory.class.php	2011-02-28 22:46:29 UTC (rev 15142)
@@ -82,34 +82,8 @@
 		if ($this->projectGroups) {
 			return $this->projectGroups;
 		}
-		if (session_loggedin()) {
-			$perm =& $this->Group->getPermission ();
-			if (!$perm || !is_object($perm) || !$perm->isMember()) {
-				$result = db_query_params ('SELECT * FROM project_group_list_vw WHERE group_id=$1 AND is_public=1 ORDER BY group_project_id',
+		$result = db_query_params ('SELECT * FROM project_group_list_vw WHERE group_id=$1 ORDER BY group_project_id',
 							   array ($this->Group->getID())) ;
-			} else {
-				if ($perm->isPMAdmin()) {
-					$result = db_query_params ('SELECT * FROM project_group_list_vw WHERE group_id=$1 AND is_public<3 ORDER BY group_project_id',
-								   array ($this->Group->getID())) ;
-				} else {
-					$result = db_query_params ('SELECT * FROM project_group_list_vw
-	WHERE group_id=$1 AND is_public<3
-	  AND group_project_id IN (SELECT role_setting.ref_id
-			           FROM role_setting, user_group
-                                   WHERE role_setting.section_name = $2
-				     AND role_setting.value::integer >= 0
-                                     AND role_setting.ref_id=project_group_list_vw.group_project_id
-				     AND user_group.role_id = role_setting.role_id
-				     AND user_group.user_id=$3)
-        ORDER BY group_project_id',
-								   array ($this->Group->getID(),
-									  'pm',
-									  user_getid())) ;
-				}
-			}
-		} else {
-				$result = db_query_params ('SELECT * FROM project_group_list_vw WHERE group_id=$1 AND is_public=1 ORDER BY group_project_id',
-							   array ($this->Group->getID())) ;
 		}
 		$rows = db_numrows($result);
 
@@ -118,7 +92,9 @@
 			$this->projectGroups=NULL;
 		} else {
 			while ($arr = db_fetch_array($result)) {
-				$this->projectGroups[] = new ProjectGroup($this->Group, $arr['group_project_id'], $arr);
+				if (forge_check_perm ('pm', $arr['group_project_id'], 'read')) {
+					$this->projectGroups[] = new ProjectGroup($this->Group, $arr['group_project_id'], $arr);
+				}
 			}
 		}
 		return $this->projectGroups;

Modified: trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactTypeFactory.class.php
===================================================================
--- trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactTypeFactory.class.php	2011-02-28 22:46:26 UTC (rev 15141)
+++ trunk/gforge_base/evolvisforge-5.1/gforge/common/tracker/ArtifactTypeFactory.class.php	2011-02-28 22:46:29 UTC (rev 15142)
@@ -88,46 +88,10 @@
 		if ($this->ArtifactTypes) {
 			return $this->ArtifactTypes;
 		}
-		if (session_loggedin()) {
-			$perm =& $this->Group->getPermission ();
-			if (!$perm || !is_object($perm) || !$perm->isMember()) {
-				$result = db_query_params ('SELECT * FROM artifact_group_list_vw
+		$result = db_query_params ('SELECT * FROM artifact_group_list_vw
 			WHERE group_id=$1
-			AND is_public=1
 			ORDER BY group_artifact_id ASC',
-							   array ($this->Group->getID())) ;
-			} else {
-				if ($perm->isArtifactAdmin()) {
-					$result = db_query_params ('SELECT * FROM artifact_group_list_vw
-			WHERE group_id=$1
-			AND is_public<3
-			ORDER BY group_artifact_id ASC',
-								   array ($this->Group->getID())) ;
-				} else {
-					$result = db_query_params ('SELECT * FROM artifact_group_list_vw
-			WHERE group_id=$1
-			AND is_public<3
-                        AND group_artifact_id IN (SELECT role_setting.ref_id
-					FROM role_setting, user_group
-					WHERE role_setting.value::integer >= 0
-                                          AND role_setting.section_name = $2
-                                          AND role_setting.ref_id=artifact_group_list_vw.group_artifact_id
-                                          
-   					  AND user_group.role_id = role_setting.role_id
-					  AND user_group.user_id = $3 )
-			ORDER BY group_artifact_id ASC',
-								   array ($this->Group->getID(),
-									  'tracker',
-									  user_getid ())) ;
-				}
-			}
-		} else {
-			$result = db_query_params ('SELECT * FROM artifact_group_list_vw
-			WHERE group_id=$1
-			AND is_public=1
-			ORDER BY group_artifact_id ASC',
-						   array ($this->Group->getID())) ;
-		}
+					   array ($this->Group->getID())) ;
 
 		$rows = db_numrows($result);
 
@@ -136,11 +100,13 @@
 			$this->ArtifactTypes=NULL;
 		} else {
 			while ($arr =& db_fetch_array($result)) {
-				$artifactType = new ArtifactType($this->Group, $arr['group_artifact_id'], $arr);
-				if($artifactType->isError()) {
-					$this->setError($artifactType->getErrorMessage());
-				} else {
-					$this->ArtifactTypes[] = $artifactType;
+				if (forge_check_perm ('tracker', $arr['group_artifact_id'], 'read')) {
+					$artifactType = new ArtifactType($this->Group, $arr['group_artifact_id'], $arr);
+					if($artifactType->isError()) {
+						$this->setError($artifactType->getErrorMessage());
+					} else {
+						$this->ArtifactTypes[] = $artifactType;
+					}
 				}
 			}
 		}



More information about the evolvis-commits mailing list