Samba 3 part is now optional
This commit is contained in:
		
							parent
							
								
									aedfdf029e
								
							
						
					
					
						commit
						0e44373ffb
					
				|  | @ -3,8 +3,10 @@ | ||||||
|   - account lists: added separate configuration page and store settings in cookies |   - account lists: added separate configuration page and store settings in cookies | ||||||
|   - use suffix from account list as default for new accounts (patch 1823583) |   - use suffix from account list as default for new accounts (patch 1823583) | ||||||
|   - Security: passwords in configuration files are now saved as hash values |   - Security: passwords in configuration files are now saved as hash values | ||||||
|   - Unix: allow to set host passwords (RFE 1754069) |  | ||||||
|   - style fixes for Internet Explorer users |   - style fixes for Internet Explorer users | ||||||
|  |   - Unix: allow to set host passwords (RFE 1754069) | ||||||
|  |   - Samba 3 groups: Samba part is now optional | ||||||
|  |   - Personal: add object classes person and organizationalPerson for new accounts (RFE 1830033) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 07.11.2007 2.1.0 | 07.11.2007 2.1.0 | ||||||
|  |  | ||||||
|  | @ -73,6 +73,7 @@ class sambaGroupMapping extends baseModule { | ||||||
| 			); | 			); | ||||||
| 		// call parent constructor
 | 		// call parent constructor
 | ||||||
| 		parent::baseModule($scope); | 		parent::baseModule($scope); | ||||||
|  | 		$this->autoAddObjectClasses = false; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/** | 	/** | ||||||
|  | @ -169,64 +170,75 @@ class sambaGroupMapping extends baseModule { | ||||||
| 	 * @return array HTML meta data | 	 * @return array HTML meta data | ||||||
| 	 */ | 	 */ | ||||||
| 	function display_html_attributes() { | 	function display_html_attributes() { | ||||||
| 		$sambaDomains = search_domains(); | 		if (isset($_POST['form_subpage_sambaGroupMapping_attributes_addObjectClass'])) { | ||||||
| 		if (sizeof($sambaDomains) == 0) { | 			$this->attributes['objectClass'][] = 'sambaGroupMapping'; | ||||||
| 			StatusMessage("ERROR", _('No Samba 3 domains found in LDAP! Please create one first.'), ''); |  | ||||||
| 			return array(); |  | ||||||
| 		} | 		} | ||||||
| 		// Get Domain-SID from group SID
 | 		$return = array(); | ||||||
| 		if (isset($this->attributes['sambaSID'][0])) { | 		if (in_array('sambaGroupMapping', $this->attributes['objectClass'])) { | ||||||
| 			$domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-")); | 			$sambaDomains = search_domains(); | ||||||
| 		} | 			if (sizeof($sambaDomains) == 0) { | ||||||
| 		for ($i=0; $i<count($sambaDomains); $i++ ) { | 				StatusMessage("ERROR", _('No Samba 3 domains found in LDAP! Please create one first.'), ''); | ||||||
| 			// List with all valid domains
 | 				return array(); | ||||||
| 			$sambaDomainNames[] = $sambaDomains[$i]->name; |  | ||||||
| 			if (isset($domainSID) && ($domainSID==$sambaDomains[$i]->SID)) { |  | ||||||
| 				$SID = $sambaDomains[$i]->SID; |  | ||||||
| 				$sel_domain = $sambaDomains[$i]->name; |  | ||||||
| 			} | 			} | ||||||
| 		} | 			// Get Domain-SID from group SID
 | ||||||
| 		$displayName = ''; | 			if (isset($this->attributes['sambaSID'][0])) { | ||||||
| 		if (isset($this->attributes['displayName'][0])) $displayName = $this->attributes['displayName'][0]; | 				$domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-")); | ||||||
| 		$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Display name') ), |  | ||||||
| 			1 => array ( 'kind' => 'input', 'name' => 'displayName', 'type' => 'text', 'size' => '30', 'maxlength' => '50', 'value' => $displayName), |  | ||||||
| 			2 => array ( 'kind' => 'help', 'value' => 'displayName' )); |  | ||||||
| 
 |  | ||||||
| 		$names = array_keys($this->rids); |  | ||||||
| 		$wrid=false; |  | ||||||
| 		for ($i=0; $i<count($names); $i++) { |  | ||||||
| 			if (isset($this->attributes['sambaSID'][0]) && ($this->attributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]])) { |  | ||||||
| 				$selected[] = $names[$i]; |  | ||||||
| 				$wrid=true; |  | ||||||
| 			} | 			} | ||||||
| 			else $options[] = $names[$i]; | 			for ($i=0; $i<count($sambaDomains); $i++ ) { | ||||||
| 		} | 				// List with all valid domains
 | ||||||
| 		$attrs = $this->getAccountContainer()->getAccountModule('posixGroup')->getAttributes(); | 				$sambaDomainNames[] = $sambaDomains[$i]->name; | ||||||
| 		if ($wrid) { | 				if (isset($domainSID) && ($domainSID==$sambaDomains[$i]->SID)) { | ||||||
| 			$options[] = $attrs['cn'][0]; | 					$SID = $sambaDomains[$i]->SID; | ||||||
|  | 					$sel_domain = $sambaDomains[$i]->name; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 			$displayName = ''; | ||||||
|  | 			if (isset($this->attributes['displayName'][0])) $displayName = $this->attributes['displayName'][0]; | ||||||
|  | 			$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Display name') ), | ||||||
|  | 				1 => array ( 'kind' => 'input', 'name' => 'displayName', 'type' => 'text', 'size' => '30', 'maxlength' => '50', 'value' => $displayName), | ||||||
|  | 				2 => array ( 'kind' => 'help', 'value' => 'displayName' )); | ||||||
|  | 	 | ||||||
|  | 			$names = array_keys($this->rids); | ||||||
|  | 			$wrid=false; | ||||||
|  | 			for ($i=0; $i<count($names); $i++) { | ||||||
|  | 				if (isset($this->attributes['sambaSID'][0]) && ($this->attributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]])) { | ||||||
|  | 					$selected[] = $names[$i]; | ||||||
|  | 					$wrid=true; | ||||||
|  | 				} | ||||||
|  | 				else $options[] = $names[$i]; | ||||||
|  | 			} | ||||||
|  | 			$attrs = $this->getAccountContainer()->getAccountModule('posixGroup')->getAttributes(); | ||||||
|  | 			if ($wrid) { | ||||||
|  | 				$options[] = $attrs['cn'][0]; | ||||||
|  | 			} | ||||||
|  | 			else { | ||||||
|  | 				$selected[] = $attrs['cn'][0]; | ||||||
|  | 			} | ||||||
|  | 			$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Windows group') ), | ||||||
|  | 				1 => array ( 'kind' => 'select', 'name' => 'sambaSID', 'options' => $options, 'options_selected' => $selected), | ||||||
|  | 				2 => array ( 'kind' => 'help', 'value' => 'sambaSID' )); | ||||||
|  | 	 | ||||||
|  | 			$names = array_keys($this->sambaGroupTypes); | ||||||
|  | 			$selected = array( _('Domain group') ); | ||||||
|  | 			for ($i=0; $i<count($names); $i++) { | ||||||
|  | 				if (!isset($this->attributes['sambaGroupType'][0])) break; | ||||||
|  | 				if ($this->attributes['sambaGroupType'][0]==$this->sambaGroupTypes[$names[$i]]) $selected = array( $names[$i] ); | ||||||
|  | 			} | ||||||
|  | 			$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Group type') ), | ||||||
|  | 				1 => array ( 'kind' => 'select', 'name' => 'sambaGroupType', 'options' => $names , 'options_selected' => $selected ), | ||||||
|  | 				2 => array ( 'kind' => 'help', 'value' => 'type' )); | ||||||
|  | 			$selectedDomain = array(); | ||||||
|  | 			if (isset($sel_domain)) $selectedDomain = array($sel_domain); | ||||||
|  | 			$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Domain') ), | ||||||
|  | 				1 => array ( 'kind' => 'select', 'name' => 'sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => $selectedDomain), | ||||||
|  | 				2 => array ( 'kind' => 'help', 'value' => 'sambaDomainName' )); | ||||||
| 		} | 		} | ||||||
| 		else { | 		else { | ||||||
| 			$selected[] = $attrs['cn'][0]; | 			$return[] = array( | ||||||
|  | 				array('kind' => 'text', 'text' => ' '), | ||||||
|  | 				array('kind' => 'input', 'type' => 'submit', 'name' => 'form_subpage_sambaGroupMapping_attributes_addObjectClass', 'value' => _('Add Samba 3 account')) | ||||||
|  | 			); | ||||||
| 		} | 		} | ||||||
| 		$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Windows group') ), |  | ||||||
| 			1 => array ( 'kind' => 'select', 'name' => 'sambaSID', 'options' => $options, 'options_selected' => $selected), |  | ||||||
| 			2 => array ( 'kind' => 'help', 'value' => 'sambaSID' )); |  | ||||||
| 
 |  | ||||||
| 		$names = array_keys($this->sambaGroupTypes); |  | ||||||
| 		$selected = array( _('Domain group') ); |  | ||||||
| 		for ($i=0; $i<count($names); $i++) { |  | ||||||
| 			if (!isset($this->attributes['sambaGroupType'][0])) break; |  | ||||||
| 			if ($this->attributes['sambaGroupType'][0]==$this->sambaGroupTypes[$names[$i]]) $selected = array( $names[$i] ); |  | ||||||
| 		} |  | ||||||
| 		$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Group type') ), |  | ||||||
| 			1 => array ( 'kind' => 'select', 'name' => 'sambaGroupType', 'options' => $names , 'options_selected' => $selected ), |  | ||||||
| 			2 => array ( 'kind' => 'help', 'value' => 'type' )); |  | ||||||
| 		$selectedDomain = array(); |  | ||||||
| 		if (isset($sel_domain)) $selectedDomain = array($sel_domain); |  | ||||||
| 		$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Domain') ), |  | ||||||
| 			1 => array ( 'kind' => 'select', 'name' => 'sambaDomainName', 'options' => $sambaDomainNames, 'options_selected' => $selectedDomain), |  | ||||||
| 			2 => array ( 'kind' => 'help', 'value' => 'sambaDomainName' )); |  | ||||||
| 
 |  | ||||||
| 		return $return; | 		return $return; | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | @ -384,19 +396,6 @@ class sambaGroupMapping extends baseModule { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 	/** |  | ||||||
| 	* This functions is used to check if all settings for this module have been made. |  | ||||||
| 	* |  | ||||||
| 	* @return boolean true, if settings are complete |  | ||||||
| 	*/ |  | ||||||
| 	function module_complete() { |  | ||||||
| 		if (!$this->module_ready()) return false; |  | ||||||
| 		if ($this->attributes['sambaSID'][0] == '') return false; |  | ||||||
| 		if ($this->attributes['sambaGroupType'][0] == '') return false; |  | ||||||
| 		return true; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 	/** | 	/** | ||||||
| 	* This function is used to check if this module page can be displayed. | 	* This function is used to check if this module page can be displayed. | ||||||
| 	* It returns false if a module depends on data from other modules which was not yet entered. | 	* It returns false if a module depends on data from other modules which was not yet entered. | ||||||
|  | @ -417,6 +416,9 @@ class sambaGroupMapping extends baseModule { | ||||||
| 	* @return array list of info/error messages | 	* @return array list of info/error messages | ||||||
| 	*/ | 	*/ | ||||||
| 	function process_attributes() { | 	function process_attributes() { | ||||||
|  | 		if (!in_array('sambaGroupMapping', $this->attributes['objectClass'])) { | ||||||
|  | 			return array(); | ||||||
|  | 		} | ||||||
| 		$errors = array(); | 		$errors = array(); | ||||||
| 		$sambaDomains = search_domains(); | 		$sambaDomains = search_domains(); | ||||||
| 		if (sizeof($sambaDomains) == 0) { | 		if (sizeof($sambaDomains) == 0) { | ||||||
|  | @ -474,31 +476,11 @@ class sambaGroupMapping extends baseModule { | ||||||
| 	* <br>"modify" are attributes which have to been modified in LDAP entry | 	* <br>"modify" are attributes which have to been modified in LDAP entry | ||||||
| 	*/ | 	*/ | ||||||
| 	function save_attributes() { | 	function save_attributes() { | ||||||
| 		// Get Domain SID from name
 | 		if (!in_array('sambaGroupMapping', $this->attributes['objectClass'])) { | ||||||
| 		$sambaDomains = search_domains(); | 			return array(); | ||||||
| 		// Get Domain-SID from group SID
 |  | ||||||
| 		$domainSID = substr($this->attributes['sambaSID'][0], 0, strrpos($this->attributes['sambaSID'][0], "-")); |  | ||||||
| 		for ($i=0; $i<count($sambaDomains); $i++ ) { |  | ||||||
| 			if ($domainSID==$sambaDomains[$i]->SID) { |  | ||||||
| 				$SID = $sambaDomains[$i]->SID; |  | ||||||
| 				$RIDbase = $sambaDomains[$i]->RIDbase; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		$names = array_keys($this->rids); |  | ||||||
| 		$wrid=false; |  | ||||||
| 		for ($i=0; $i<count($names); $i++) { |  | ||||||
| 			if ($this->attributes['sambaSID'][0]==$SID."-".$this->rids[$names[$i]]) { |  | ||||||
| 				$wrid=true; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		if (!$wrid) { |  | ||||||
| 			$attrs = $this->getAccountContainer()->getAccountModule('posixGroup')->getAttributes(); |  | ||||||
| 			$this->attributes['sambaSID'][0] = $SID."-".($attrs['gidNumber'][0]*2+1+$RIDbase); |  | ||||||
| 		} |  | ||||||
| 		$return = $this->getAccountContainer()->save_module_attributes($this->attributes, $this->orig); |  | ||||||
| 
 |  | ||||||
| 		return $return; |  | ||||||
| 		} | 		} | ||||||
|  | 		return $this->getAccountContainer()->save_module_attributes($this->attributes, $this->orig); | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue