Browse Source

Ahmes/Ams domyślna grupa uprawnień userów przy tworzeniu nowych rekordów

Piotr Labudda 11 năm trước cách đây
mục cha
commit
2426d7943d

+ 7 - 0
SE/se-lib/TableAjax.php

@@ -2852,6 +2852,13 @@ jQuery(document).ready(function(){
 
 
 		$cols = array();
 		$cols = array();
 		$forceFilterInit = array();
 		$forceFilterInit = array();
+
+		$defaultAclGroup = User::getDefaultAclGroup();
+		if ($defaultAclGroup) {
+			$forceFilterInit['A_ADM_COMPANY'] = $defaultAclGroup;
+			$forceFilterInit['A_CLASSIFIED'] = $defaultAclGroup;
+		}
+
 		foreach ($_GET as $k => $v) {
 		foreach ($_GET as $k => $v) {
 			if (strlen($k) > 4 && substr($k, 0, 3) == 'ff_' && !empty($v)) {// force filter prefix
 			if (strlen($k) > 4 && substr($k, 0, 3) == 'ff_' && !empty($v)) {// force filter prefix
 				$fldName = substr($k, 3);
 				$fldName = substr($k, 3);

+ 33 - 0
SE/se-lib/TypespecialVariable.php

@@ -26,6 +26,7 @@ class TypespecialVariable extends TypespecialBase {
 			case '__TELBOXES_NAME':
 			case '__TELBOXES_NAME':
 			case '__ZASOB':
 			case '__ZASOB':
 			case '__COMPANIES':
 			case '__COMPANIES':
+			case 'DEFAULT_ACL_GROUP':
 				return new TypespecialVariable($fldID, $fldName);
 				return new TypespecialVariable($fldID, $fldName);
 				break;
 				break;
 		}
 		}
@@ -61,6 +62,7 @@ class TypespecialVariable extends TypespecialBase {
 		switch ($this->fldName) {
 		switch ($this->fldName) {
 			case 'A_ADM_COMPANY':
 			case 'A_ADM_COMPANY':
 			case 'A_CLASSIFIED':
 			case 'A_CLASSIFIED':
+			case 'DEFAULT_ACL_GROUP':
 				$jsonAllowCreate = 'false';
 				$jsonAllowCreate = 'false';
 				break;
 				break;
 			default:
 			default:
@@ -240,6 +242,37 @@ class TypespecialVariable extends TypespecialBase {
 					}
 					}
 				}
 				}
 				break;
 				break;
+			case 'DEFAULT_ACL_GROUP':
+				Lib::loadClass('UsersHelper');
+				$userLdapGroups = UsersHelper::getLDAPGroupsAll();
+				if(V::get('DBG_TS', 0, $_GET) > 2){echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;text-align:left;">userLdapGroups (' . __CLASS__ . '::' . __FUNCTION__ . ':' . __LINE__ . '): ';print_r($userLdapGroups);echo'</pre>';}
+				if (!empty($userLdapGroups)) {
+					foreach ($userLdapGroups as $kID => $vLdapGroup) {
+						$allowGroup = false;
+						//$allowGroup = $vLdapGroup->gidNumber > 1000;
+						if ('workgroup' == $vLdapGroup->cn) {
+							$allowGroup = true;
+						} else {
+							$cnTest = str_replace('-', '_', $vLdapGroup->cn);
+							$cnTest = explode('_', $cnTest);
+							$cnTest = $cnTest[0];
+							if (is_numeric($cnTest)) {
+								$allowGroup = true;
+							}
+						}
+						if ($allowGroup) {
+							if ($strict) {
+								if (!empty($query) && $query == $vLdapGroup->cn) {
+									$values[$vLdapGroup->cn] = (object)array('id'=>$vLdapGroup->cn, 'param_out'=>$vLdapGroup->cn);
+								}
+							} else {
+								$values[$vLdapGroup->cn] = (object)array('id'=>$vLdapGroup->cn, 'param_out'=>$vLdapGroup->cn);
+								//$values[$vLdapGroup->cn] = $vLdapGroup->cn;
+							}
+						}
+					}
+				}
+				break;
 			case 'K_OD_KOGO':
 			case 'K_OD_KOGO':
 				$db = DB::getDB();
 				$db = DB::getDB();
 				$OD_KOGO_ADRES_ID = 0;
 				$OD_KOGO_ADRES_ID = 0;

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

@@ -41,16 +41,29 @@ class User {
 		return $_SESSION['ADM_INICJALY_HANDLOWCA'];
 		return $_SESSION['ADM_INICJALY_HANDLOWCA'];
 	}
 	}
 
 
+	public static function getDefaultAclGroup() {
+		if (!V::get('DEFAULT_ACL_GROUP', '', $_SESSION)) {
+			self::_fetchMoreUserData();
+		}
+		return $_SESSION['DEFAULT_ACL_GROUP'];
+	}
+
 	public static function _fetchMoreUserData() {
 	public static function _fetchMoreUserData() {
 		$db = DB::getDB();
 		$db = DB::getDB();
 		$login = self::getLogin();
 		$login = self::getLogin();
 		if (empty($login)) return false;
 		if (empty($login)) return false;
-		$sql = "select `ID`, `INICJALY_HANDLOWCA`, `EMPLOYEE_TYPE` from `ADMIN_USERS` where `ADM_ACCOUNT`='{$login}' limit 1 ";
+		$sql = "select `ID`, `INICJALY_HANDLOWCA`, `EMPLOYEE_TYPE`
+				, `DEFAULT_ACL_GROUP`
+			from `ADMIN_USERS`
+			where `ADM_ACCOUNT`='{$login}'
+			limit 1
+		";
 		$res = $db->query($sql);
 		$res = $db->query($sql);
 		if ($r = $db->fetch($res)) {
 		if ($r = $db->fetch($res)) {
 			$_SESSION['ADM_ID'] = $r->ID;
 			$_SESSION['ADM_ID'] = $r->ID;
 			$_SESSION['ADM_INICJALY_HANDLOWCA'] = $r->INICJALY_HANDLOWCA;
 			$_SESSION['ADM_INICJALY_HANDLOWCA'] = $r->INICJALY_HANDLOWCA;
 			$_SESSION['EMPLOYEE_TYPE'] = $r->EMPLOYEE_TYPE;
 			$_SESSION['EMPLOYEE_TYPE'] = $r->EMPLOYEE_TYPE;
+			$_SESSION['DEFAULT_ACL_GROUP'] = $r->DEFAULT_ACL_GROUP;
 		}
 		}
 	}
 	}