瀏覽代碼

Update user_edit.php

FusionPBX 6 年之前
父節點
當前提交
2793211d1d
共有 1 個文件被更改,包括 22 次插入16 次删除
  1. 22 16
      core/users/user_edit.php

+ 22 - 16
core/users/user_edit.php

@@ -375,18 +375,24 @@
 				$group_data = explode('|', $group_uuid_name);
 				$group_data = explode('|', $group_uuid_name);
 				$group_uuid = $group_data[0];
 				$group_uuid = $group_data[0];
 				$group_name = $group_data[1];
 				$group_name = $group_data[1];
-				//only a superadmin can add other superadmins or admins, admins can only add other admins
-				switch ($group_name) {
-					case "superadmin": if (!if_group("superadmin")) { break; }
-					case "admin": if (!if_group("superadmin") && !if_group("admin")) { break; }
-					default: //add group user to array for insert
-						$array['user_groups'][$n]['user_group_uuid'] = uuid();
-						$array['user_groups'][$n]['domain_uuid'] = $domain_uuid;
-						$array['user_groups'][$n]['group_name'] = $group_name;
-						$array['user_groups'][$n]['group_uuid'] = $group_uuid;
-						$array['user_groups'][$n]['user_uuid'] = $user_uuid;
-						$n++;
+
+				//compare the group level to only add groups at the same level or lower than the user
+				$sql = "select * from v_groups ";
+				$sql .= "where (domain_uuid = :domain_uuid or domain_uuid is null) ";
+				$sql .= "and group_uuid = :group_uuid ";
+				$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
+				$parameters['group_uuid'] = $group_uuid;
+				$database = new database;
+				$row = $database->select($sql, $parameters, 'row');
+				if ($row['group_level'] <= $_SESSION['user']['group_level']) {
+					$array['user_groups'][$n]['user_group_uuid'] = uuid();
+					$array['user_groups'][$n]['domain_uuid'] = $domain_uuid;
+					$array['user_groups'][$n]['group_name'] = $group_name;
+					$array['user_groups'][$n]['group_uuid'] = $group_uuid;
+					$array['user_groups'][$n]['user_uuid'] = $user_uuid;
+					$n++;
 				}
 				}
+				unset($parameters);
 			}
 			}
 
 
 		//update domain, if changed
 		//update domain, if changed
@@ -943,11 +949,11 @@
 			echo "<select name='group_uuid_name' class='formfld' style='width: auto; margin-right: 3px;' ".($action == 'add' ? "required='required'" : null).">\n";
 			echo "<select name='group_uuid_name' class='formfld' style='width: auto; margin-right: 3px;' ".($action == 'add' ? "required='required'" : null).">\n";
 			echo "	<option value=''></option>\n";
 			echo "	<option value=''></option>\n";
 			foreach($groups as $field) {
 			foreach($groups as $field) {
-				if ($field['group_name'] == "superadmin" && !if_group("superadmin")) { continue; }	//only show the superadmin group to other superadmins
-				if ($field['group_name'] == "admin" && (!if_group("superadmin") && !if_group("admin") )) { continue; }	//only show the admin group to other admins
-				if ( !isset($assigned_groups) || (isset($assigned_groups) && !in_array($field["group_uuid"], $assigned_groups)) ) {
-					if ($group_uuid_name == $field['group_uuid']."|".$field['group_name']) { $selected = "selected='selected'"; } else { $selected = ''; }
-					echo "	<option value='".$field['group_uuid']."|".$field['group_name']."' $selected>".$field['group_name'].(($field['domain_uuid'] != '') ? "@".$_SESSION['domains'][$field['domain_uuid']]['domain_name'] : null)."</option>\n";
+				if ($field['group_level'] <= $_SESSION['user']['group_level']) {
+					if (!isset($assigned_groups) || (isset($assigned_groups) && !in_array($field["group_uuid"], $assigned_groups))) {
+						if ($group_uuid_name == $field['group_uuid']."|".$field['group_name']) { $selected = "selected='selected'"; } else { $selected = ''; }
+						echo "	<option value='".$field['group_uuid']."|".$field['group_name']."' $selected>".$field['group_name'].(($field['domain_uuid'] != '') ? "@".$_SESSION['domains'][$field['domain_uuid']]['domain_name'] : null)."</option>\n";
+					}
 				}
 				}
 			}
 			}
 			echo "</select>";
 			echo "</select>";