refactoring
This commit is contained in:
		
							parent
							
								
									c8d1e5ab82
								
							
						
					
					
						commit
						3dc40d1f99
					
				| 
						 | 
					@ -3022,9 +3022,6 @@ class windowsUser extends baseModule implements passwordService {
 | 
				
			||||||
	 * @param array $attributes LDAP attributes
 | 
						 * @param array $attributes LDAP attributes
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	private function setSelfServicePassword(&$return, $attributes) {
 | 
						private function setSelfServicePassword(&$return, $attributes) {
 | 
				
			||||||
		if (!function_exists('ldap_modify_batch')) {
 | 
					 | 
				
			||||||
			return $this->setSelfServicePasswordCMD($return, $attributes);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$newPasswordVal = self::pwdAttributeValue($_POST['windowsUser_unicodePwd']);
 | 
							$newPasswordVal = self::pwdAttributeValue($_POST['windowsUser_unicodePwd']);
 | 
				
			||||||
		$oldPassword = lamDecrypt($_SESSION['selfService_clientPassword'], 'SelfService');
 | 
							$oldPassword = lamDecrypt($_SESSION['selfService_clientPassword'], 'SelfService');
 | 
				
			||||||
		$oldPasswordVal = self::pwdAttributeValue($oldPassword);
 | 
							$oldPasswordVal = self::pwdAttributeValue($oldPassword);
 | 
				
			||||||
| 
						 | 
					@ -3058,80 +3055,6 @@ class windowsUser extends baseModule implements passwordService {
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Sets the user password in self service.
 | 
					 | 
				
			||||||
	 * Since the change requires the old password we need to run ldapmodify for this task.
 | 
					 | 
				
			||||||
	 *
 | 
					 | 
				
			||||||
	 * Enter description here ...
 | 
					 | 
				
			||||||
	 * @param array $return return value for checkSelfServiceOptions() (used to add message if any)
 | 
					 | 
				
			||||||
	 * @param array $attributes LDAP attributes
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	private function setSelfServicePasswordCMD(&$return, $attributes) {
 | 
					 | 
				
			||||||
		$newPasswordVal = self::pwdAttributeValue($_POST['windowsUser_unicodePwd']);
 | 
					 | 
				
			||||||
		$oldPassword = lamDecrypt($_SESSION['selfService_clientPassword'], 'SelfService');
 | 
					 | 
				
			||||||
		$oldPasswordVal = self::pwdAttributeValue($oldPassword);
 | 
					 | 
				
			||||||
		$dn = $attributes['dn'];
 | 
					 | 
				
			||||||
		$ldif = "dn: " . $dn . "\n";
 | 
					 | 
				
			||||||
		$ldif .= "changetype: modify\n";
 | 
					 | 
				
			||||||
		$ldif .= "delete: unicodePwd\n";
 | 
					 | 
				
			||||||
		$ldif .= "unicodePwd:: " . base64_encode($oldPasswordVal) . "\n";
 | 
					 | 
				
			||||||
		$ldif .= "-\n";
 | 
					 | 
				
			||||||
		$ldif .= "add: unicodePwd\n";
 | 
					 | 
				
			||||||
		$ldif .= "unicodePwd:: " . base64_encode($newPasswordVal) . "\n";
 | 
					 | 
				
			||||||
		$ldif .= "-\n";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		$serverURL = $_SESSION['selfServiceProfile']->serverURL;
 | 
					 | 
				
			||||||
		$tls = '';
 | 
					 | 
				
			||||||
		if ($_SESSION['selfServiceProfile']->useTLS) {
 | 
					 | 
				
			||||||
			$tls = ' -ZZ ';
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$cmd = "/usr/bin/ldapmodify -H " . $serverURL . $tls . " -D " . escapeshellarg($dn) . " -x -w " . escapeshellarg($oldPassword);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		$descriptorspec = array(
 | 
					 | 
				
			||||||
			0 => array("pipe", "r"), // stdin
 | 
					 | 
				
			||||||
			1 => array("pipe", "w"), // stout
 | 
					 | 
				
			||||||
			2 => array("pipe", "w") // sterr
 | 
					 | 
				
			||||||
		);
 | 
					 | 
				
			||||||
		$process = proc_open($cmd, $descriptorspec, $pipes);
 | 
					 | 
				
			||||||
		if (is_resource($process)) {
 | 
					 | 
				
			||||||
			fwrite($pipes[0], $ldif);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		else {
 | 
					 | 
				
			||||||
			logNewMessage(LOG_ERR, 'Unable to change password of ' . $dn . '. Calling /usr/bin/ldapmodify failed.');
 | 
					 | 
				
			||||||
			$return['messages'][] = array('ERROR', _('Unable to change password.'));
 | 
					 | 
				
			||||||
			return;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		fclose($pipes[0]);
 | 
					 | 
				
			||||||
		$outputMessages = '';
 | 
					 | 
				
			||||||
		while (!feof($pipes[1])) {
 | 
					 | 
				
			||||||
			$output = fgets($pipes[1], 1024);
 | 
					 | 
				
			||||||
			if ($output != '') {
 | 
					 | 
				
			||||||
				$outputMessages .= $output;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		while (!feof($pipes[2])) {
 | 
					 | 
				
			||||||
			$output = fgets($pipes[2], 1024);
 | 
					 | 
				
			||||||
			if ($output != '') {
 | 
					 | 
				
			||||||
				$outputMessages .= $output;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		fclose($pipes[1]);
 | 
					 | 
				
			||||||
		$returnCode = proc_close($process);
 | 
					 | 
				
			||||||
		if ($returnCode != 0) {
 | 
					 | 
				
			||||||
			$outputMessages = htmlspecialchars($outputMessages);
 | 
					 | 
				
			||||||
			// Active Directory message translations
 | 
					 | 
				
			||||||
			if ((strpos($outputMessages, 'DSID-03190F80') !== false) && (strpos($outputMessages, 'unicodePwd') !== false)) {
 | 
					 | 
				
			||||||
				$outputMessages = _('Your password does not meet the password strength qualifications. Please retry with another one.') . '<br><br>' . $outputMessages;
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			logNewMessage(LOG_ERR, 'Changing user password failed: ' . $outputMessages);
 | 
					 | 
				
			||||||
			$return['messages'][] = array('ERROR', _('Unable to change password.'), $outputMessages);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		else {
 | 
					 | 
				
			||||||
			// update session password for next page load
 | 
					 | 
				
			||||||
			$_SESSION['selfService_clientPasswordNew'] = $_POST['windowsUser_unicodePwd'];
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * This method specifies if a module manages password attributes. The module alias will
 | 
						 * This method specifies if a module manages password attributes. The module alias will
 | 
				
			||||||
	 * then appear as option in the GUI.
 | 
						 * then appear as option in the GUI.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue