support forced password changes in self service (bug 3483907)
This commit is contained in:
		
							parent
							
								
									252e8682bf
								
							
						
					
					
						commit
						3b2760c6ff
					
				| 
						 | 
				
			
			@ -1231,11 +1231,12 @@ abstract class baseModule {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param array $fields list of active fields
 | 
			
		||||
	 * @param array $attributes attributes of LDAP account
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return htmlElement meta HTML object
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @see htmlElement
 | 
			
		||||
	 */
 | 
			
		||||
	public function getSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	public function getSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		// this function must be overwritten by subclasses.
 | 
			
		||||
		return array();
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -1253,9 +1254,10 @@ abstract class baseModule {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param string $fields input fields
 | 
			
		||||
	 * @param array $attributes LDAP attributes
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array messages and attributes (array('messages' => array(), 'add' => array('mail' => array('test@test.com')), 'del' => array(), 'mod' => array(), 'info' => array()))
 | 
			
		||||
	 */
 | 
			
		||||
	public function checkSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	public function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
 | 
			
		||||
		return $return;
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1577,11 +1577,12 @@ class asteriskAccount extends baseModule implements passwordService {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param string $fields input fields
 | 
			
		||||
	 * @param array $attributes LDAP attributes
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array messages and attributes (array('messages' => array(), 'add' => array('mail' => array('test@test.com')), 'del' => array(), 'mod' => array(), 'info' => array()))
 | 
			
		||||
	 */
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
 | 
			
		||||
		if (!in_array_ignore_case('AsteriskSIPUser', $attributes['objectClass'])) {
 | 
			
		||||
		if (!isset($attributes['objectClass']) || !in_array_ignore_case('AsteriskSIPUser', $attributes['objectClass'])) {
 | 
			
		||||
			return $return;
 | 
			
		||||
		}
 | 
			
		||||
		if (isset($_POST['posixAccount_password']) && ($_POST['posixAccount_password'] != '')) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -587,11 +587,12 @@ class asteriskVoicemail extends baseModule implements passwordService {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param string $fields input fields
 | 
			
		||||
	 * @param array $attributes LDAP attributes
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array messages and attributes (array('messages' => array(), 'add' => array('mail' => array('test@test.com')), 'del' => array(), 'mod' => array(), 'info' => array()))
 | 
			
		||||
	 */
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
 | 
			
		||||
		if (!in_array_ignore_case('AsteriskVoiceMail', $attributes['objectClass'])) {
 | 
			
		||||
		if (!isset($attributes['objectClass']) || !in_array_ignore_case('AsteriskVoiceMail', $attributes['objectClass'])) {
 | 
			
		||||
			return $return;
 | 
			
		||||
		}
 | 
			
		||||
		if (isset($_POST['posixAccount_password']) && ($_POST['posixAccount_password'] != '')) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2478,10 +2478,14 @@ class inetOrgPerson extends baseModule implements passwordService {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param array $fields list of active fields
 | 
			
		||||
	 * @param array $attributes attributes of LDAP account
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array meta HTML
 | 
			
		||||
	 */
 | 
			
		||||
	function getSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function getSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array();
 | 
			
		||||
		if ($passwordChangeOnly) {
 | 
			
		||||
			return $return; // no fields as long no LDAP content can be read
 | 
			
		||||
		}
 | 
			
		||||
		if (in_array('firstName', $fields)) {
 | 
			
		||||
			$firstName = '';
 | 
			
		||||
			if (isset($attributes['givenName'][0])) $firstName = $attributes['givenName'][0];
 | 
			
		||||
| 
						 | 
				
			
			@ -2677,10 +2681,14 @@ class inetOrgPerson extends baseModule implements passwordService {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param string $fields input fields
 | 
			
		||||
	 * @param array $attributes LDAP attributes
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array messages and attributes (array('messages' => array(), 'add' => array('mail' => array('test@test.com')), 'del' => array(), 'mod' => array(), 'info' => array()))
 | 
			
		||||
	 */
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
 | 
			
		||||
		if ($passwordChangeOnly) {
 | 
			
		||||
			return $return; // skip processing if only a password change is done
 | 
			
		||||
		}
 | 
			
		||||
		$attributeNames = array(); // list of attributes which should be checked for modification
 | 
			
		||||
		$attributesNew = $attributes;
 | 
			
		||||
		// first name
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -818,9 +818,13 @@ class kolabUser extends baseModule {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param array $fields list of active fields
 | 
			
		||||
	 * @param array $attributes attributes of LDAP account
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array meta HTML
 | 
			
		||||
	 */
 | 
			
		||||
	function getSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function getSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		if ($passwordChangeOnly) {
 | 
			
		||||
			return array(); // no Kolab fields as long no LDAP content can be read
 | 
			
		||||
		}
 | 
			
		||||
		if (!in_array('kolabInetOrgPerson', $attributes['objectClass'])) {
 | 
			
		||||
			return array();
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			@ -926,10 +930,14 @@ class kolabUser extends baseModule {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param string $fields input fields
 | 
			
		||||
	 * @param array $attributes LDAP attributes
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array messages and attributes (array('messages' => array(), 'add' => array('mail' => array('test@test.com')), 'del' => array(), 'mod' => array(), 'info' => array()))
 | 
			
		||||
	 */
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
 | 
			
		||||
		if ($passwordChangeOnly) {
 | 
			
		||||
			return $return; // skip processing if only a password change is done
 | 
			
		||||
		}
 | 
			
		||||
		if (!in_array_ignore_case('kolabInetOrgPerson', $attributes['objectClass'])) {
 | 
			
		||||
			return $return;
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2067,9 +2067,10 @@ class posixAccount extends baseModule implements passwordService {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param array $fields list of active fields
 | 
			
		||||
	 * @param array $attributes attributes of LDAP account
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array meta HTML
 | 
			
		||||
	 */
 | 
			
		||||
	function getSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function getSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array();
 | 
			
		||||
		if (in_array('password', $fields)) {
 | 
			
		||||
			$pwdTable = new htmlTable();
 | 
			
		||||
| 
						 | 
				
			
			@ -2084,6 +2085,9 @@ class posixAccount extends baseModule implements passwordService {
 | 
			
		|||
				$pwdTable
 | 
			
		||||
			));
 | 
			
		||||
		}
 | 
			
		||||
		if ($passwordChangeOnly) {
 | 
			
		||||
			return $return; // only password fields as long no LDAP content can be read
 | 
			
		||||
		}
 | 
			
		||||
		if (in_array('cn', $fields)) {
 | 
			
		||||
			$cn = '';
 | 
			
		||||
			if (isset($attributes['cn'][0])) $cn = $attributes['cn'][0];
 | 
			
		||||
| 
						 | 
				
			
			@ -2115,9 +2119,10 @@ class posixAccount extends baseModule implements passwordService {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param string $fields input fields
 | 
			
		||||
	 * @param array $attributes LDAP attributes
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array messages and attributes (array('messages' => array(), 'add' => array('mail' => array('test@test.com')), 'del' => array(), 'mod' => array(), 'info' => array()))
 | 
			
		||||
	 */
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
 | 
			
		||||
		if (in_array('password', $fields)) {
 | 
			
		||||
			if (isset($_POST['posixAccount_password']) && ($_POST['posixAccount_password'] != '')) {
 | 
			
		||||
| 
						 | 
				
			
			@ -2145,6 +2150,9 @@ class posixAccount extends baseModule implements passwordService {
 | 
			
		|||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		if ($passwordChangeOnly) {
 | 
			
		||||
			return $return; // skip processing if only a password change is done
 | 
			
		||||
		}
 | 
			
		||||
		if (in_array('cn', $fields)) {
 | 
			
		||||
			if (isset($_POST['posixAccount_cn']) && ($_POST['posixAccount_cn'] != '')) {
 | 
			
		||||
				if (!get_preg($_POST['posixAccount_cn'], 'cn')) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2090,11 +2090,12 @@ class sambaSamAccount extends baseModule implements passwordService {
 | 
			
		|||
	 *
 | 
			
		||||
	 * @param string $fields input fields
 | 
			
		||||
	 * @param array $attributes LDAP attributes
 | 
			
		||||
	 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
	 * @return array messages and attributes (array('messages' => array(), 'add' => array('mail' => array('test@test.com')), 'del' => array(), 'mod' => array(), 'info' => array()))
 | 
			
		||||
	 */
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes) {
 | 
			
		||||
	function checkSelfServiceOptions($fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
		$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
 | 
			
		||||
		if (!in_array_ignore_case('sambaSamAccount', $attributes['objectClass'])) {
 | 
			
		||||
		if (!isset($attributes['objectClass']) || !in_array_ignore_case('sambaSamAccount', $attributes['objectClass'])) {
 | 
			
		||||
			return $return;
 | 
			
		||||
		}
 | 
			
		||||
		if (isset($_POST['posixAccount_password']) && ($_POST['posixAccount_password'] != '')) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,15 +90,16 @@ function getSelfServiceFieldSettings($scope) {
 | 
			
		|||
 * @param string $scope account type
 | 
			
		||||
 * @param array $fields input fields (array(<moduleName> => array(<field1>, <field2>, ...)))
 | 
			
		||||
 * @param array $attributes LDAP attributes (attribute names in lower case)
 | 
			
		||||
 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
 * @return array meta HTML code (array(<moduleName> => htmlTableRow))
 | 
			
		||||
 */
 | 
			
		||||
function getSelfServiceOptions($scope, $fields, $attributes) {
 | 
			
		||||
function getSelfServiceOptions($scope, $fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
	$return = array();
 | 
			
		||||
	$modules = getAvailableModules($scope);
 | 
			
		||||
	for ($i = 0; $i < sizeof($modules); $i++) {
 | 
			
		||||
		if (!isset($fields[$modules[$i]])) continue;
 | 
			
		||||
		$m = new $modules[$i]($scope);
 | 
			
		||||
		$code = $m->getSelfServiceOptions($fields[$modules[$i]], $attributes);
 | 
			
		||||
		$code = $m->getSelfServiceOptions($fields[$modules[$i]], $attributes, $passwordChangeOnly);
 | 
			
		||||
		if (sizeof($code) > 0) $return[$modules[$i]] = $code;
 | 
			
		||||
	}
 | 
			
		||||
	return $return;
 | 
			
		||||
| 
						 | 
				
			
			@ -111,15 +112,16 @@ function getSelfServiceOptions($scope, $fields, $attributes) {
 | 
			
		|||
 * @param string $scope account type
 | 
			
		||||
 * @param string $fields input fields (array(<moduleName> => array(<field1>, <field2>, ...)))
 | 
			
		||||
 * @param array $attributes LDAP attributes
 | 
			
		||||
 * @param boolean $passwordChangeOnly indicates that the user is only allowed to change his password and no LDAP content is readable
 | 
			
		||||
 * @return array messages and LDAP commands (array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array()))
 | 
			
		||||
 */
 | 
			
		||||
function checkSelfServiceOptions($scope, $fields, $attributes) {
 | 
			
		||||
function checkSelfServiceOptions($scope, $fields, $attributes, $passwordChangeOnly) {
 | 
			
		||||
	$return = array('messages' => array(), 'add' => array(), 'del' => array(), 'mod' => array(), 'info' => array());
 | 
			
		||||
	$modules = getAvailableModules($scope);
 | 
			
		||||
	for ($i = 0; $i < sizeof($modules); $i++) {
 | 
			
		||||
		if (!isset($fields[$modules[$i]])) continue;
 | 
			
		||||
		$m = new $modules[$i]($scope);
 | 
			
		||||
		$result = $m->checkSelfServiceOptions($fields[$modules[$i]], $attributes);
 | 
			
		||||
		$result = $m->checkSelfServiceOptions($fields[$modules[$i]], $attributes, $passwordChangeOnly);
 | 
			
		||||
		if (sizeof($result['messages']) > 0) $return['messages'] = array_merge($result['messages'], $return['messages']);
 | 
			
		||||
		if (sizeof($result['add']) > 0) $return['add'] = array_merge($result['add'], $return['add']);
 | 
			
		||||
		if (sizeof($result['del']) > 0) $return['del'] = array_merge($result['del'], $return['del']);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue