فهرست منبع

Acl check if user can view proces in tests (goto_and_ret.)

Piotr Labudda 10 سال پیش
والد
کامیت
f4a7f27d31
2فایلهای تغییر یافته به همراه32 افزوده شده و 4 حذف شده
  1. 6 1
      SE/procesy5.php
  2. 26 3
      SE/se-lib/UserAcl.php

+ 6 - 1
SE/procesy5.php

@@ -915,7 +915,6 @@ function task_VIEW_PROCES_MAP() {
 
 
 function task_PROCES_VIEW_LIST() {
-	User_procesy5_check_access();
 	$tbl = 'CRM_PROCES';
 
 	$id_proces = V::get('id_proces', '', $_REQUEST, 'int');
@@ -930,6 +929,12 @@ function task_PROCES_VIEW_LIST() {
 		return;
 	}
 
+	$userAcl = User::getAcl();
+	if (!$userAcl->canViewProces($id_proces)) {
+		echo '<div class="alert alert-danger">' . "Brak uprawnień do procesu" . '</div>';
+		return;
+	}
+
 	if (!V::get('HIDE_PANEL', 0, $_GET, 'int')) {
 		// pathway
 		echo'<h1>'.App::link("Menu", "?task=CRM_MENU");

+ 26 - 3
SE/se-lib/UserAcl.php

@@ -540,7 +540,7 @@ SQL;
 	}
 
 	public function canExecuteProcesInit($idProcesInit) {
-		$canExecuteProcesInit = false;
+		$isAllowed = false;
 		$idProcesInit = (int)$idProcesInit;
 		if (!$idProcesInit) return false;
 		$idUserGroupList = User::getGroupsIds();
@@ -556,10 +556,33 @@ SQL;
 		$res = $db->query($checkProcesAccessSql);
 		if ($r = $db->fetch($res)) {
 			if ($r->cnt > 0) {
-				$canExecuteProcesInit = true;
+				$isAllowed = true;
 			}
 		}
-		return $canExecuteProcesInit;
+		return $isAllowed;
+	}
+
+	public function canViewProces($idProcesInit) {
+		$isAllowed = false;
+		$idProcesInit = (int)$idProcesInit;
+		if (!$idProcesInit) return false;
+		$idUserGroupList = User::getGroupsIds();
+		$sqlIdUserGroupList = implode(",", $idUserGroupList);
+		$checkProcesAccessSql = <<<SQL
+			select count(*) as cnt
+				from `CRM_PROCES_idx_GROUP_to_PROCES` gi
+					join `CRM_PROCES` p on(p.`ID`=gi.`ID_PROCES`)
+				where gi.`ID_GROUP` in({$sqlIdUserGroupList})
+					and gi.`ID_PROCES`='{$idProcesInit}'
+SQL;
+		$db = DB::getDB();
+		$res = $db->query($checkProcesAccessSql);
+		if ($r = $db->fetch($res)) {
+			if ($r->cnt > 0) {
+				$isAllowed = true;
+			}
+		}
+		return $isAllowed;
 	}
 
 }