فهرست منبع

Acl: add User::hasAccessToEditTable($tableName) - check perm W,C or S

Piotr Labudda 10 سال پیش
والد
کامیت
78c3eb943b
3فایلهای تغییر یافته به همراه30 افزوده شده و 14 حذف شده
  1. 7 14
      SE/se-lib/FilterFactory.php
  2. 9 0
      SE/se-lib/TableAcl.php
  3. 14 0
      SE/se-lib/User.php

+ 7 - 14
SE/se-lib/FilterFactory.php

@@ -11,16 +11,16 @@ class FilterFactory {
 
 		// TODO: add trigger: on clear all filters - remove cookie, on tree key
 		//$tree_filter->
+		$filtr = array();
+		if (User::hasAccessToEditTable($tbl)) {
+			$filtr = array();
+			$filtr['TAK'] = '1';
+			$filtr['NIE'] = '0';
+			$tree_filter->add_filter('filtr_edit', $filtr, 'NIE', 'Edytuj');
+		}
 
 		if ($tbl == 'CRM_PROCES') {
 			{// filtry
-				$filtr = array();
-				if (User::hasAccess('procesy_admin')) { // filtr_edit, only for admins
-					$filtr = array();
-					$filtr['TAK'] = '1';
-					$filtr['NIE'] = '0';
-					$tree_filter->add_filter('filtr_edit', $filtr, 'NIE', 'Edytuj');
-				}
 				{ // filtr_drzewo - TODO: czy uzywane?
 					$filtr = array();
 					$filtr['ZWIN'] = '0';
@@ -77,13 +77,6 @@ class FilterFactory {
 		}
 		else if ($tbl == 'CRM_LISTA_ZASOBOW') {
 			{// filtry
-				$filtr = array();
-				if (User::hasAccess('procesy_admin')) { // filtr_edit, only for admins
-					$filtr = array();
-					$filtr['TAK'] = '1';
-					$filtr['NIE'] = '0';
-					$tree_filter->add_filter('filtr_edit', $filtr, 'NIE', 'Edytuj');
-				}
 				{ // filtr_drzewo
 					$filtr = array();
 					$filtr['ZWIN'] = '0';

+ 9 - 0
SE/se-lib/TableAcl.php

@@ -192,6 +192,15 @@ class TableAcl {
 		return $fieldID;
 	}
 
+	public function hasEditPerms() {
+		foreach ($this->_fields as $kFldID => $vFld) {
+			if ($this->hasFieldPerm($kFldID, 'W')) return true;
+			if ($this->hasFieldPerm($kFldID, 'C')) return true;
+			if ($this->hasFieldPerm($kFldID, 'S')) return true;
+		}
+		return false;
+	}
+
 	public function hasSuperAccessPerms() {
 		foreach ($this->_fields as $kFldID => $vFld) {
 			if ($this->hasFieldPerm($kFldID, 'S')) {

+ 14 - 0
SE/se-lib/User.php

@@ -642,6 +642,20 @@ class User {
 		return false;
 	}
 
+	public static function hasAccessToEditTable($tableName) {
+		if (empty($tableName)) return;
+		$userAcl = User::getAcl();
+		$userAcl->fetchGroups();
+		Lib::loadClass('ProcesHelper');
+		$zasobID = ProcesHelper::getZasobTableID($tableName);
+		if (!$userAcl->hasTableAcl($zasobID)) {
+			return false;
+		}
+		$tblAcl = $userAcl->getTableAcl($zasobID);
+		$tblAcl->init();
+		return $tblAcl->hasEditPerms();
+	}
+
 	public static function hasGroup($groupName) {
 		// TODO: find group by name @see self::getGroups() @used in SchemaReaderProcess
 		return false;