added central password service
This commit is contained in:
parent
7ce54f018e
commit
29647f9596
|
@ -4,7 +4,7 @@ $Id$
|
|||
|
||||
This code is part of LDAP Account Manager (http://www.sourceforge.net/projects/lam)
|
||||
Copyright (C) 2003 - 2006 Tilo Lutz
|
||||
2007 - 2008 Roland Gruber
|
||||
2007 - 2009 Roland Gruber
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -37,7 +37,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|||
*
|
||||
* @package modules
|
||||
*/
|
||||
class posixGroup extends baseModule {
|
||||
class posixGroup extends baseModule implements passwordService {
|
||||
|
||||
/** change GIDs of users and hosts? */
|
||||
private $changegids;
|
||||
|
@ -182,12 +182,7 @@ class posixGroup extends baseModule {
|
|||
array('kind' => 'text', 'text' => _("Group members")),
|
||||
array('kind' => 'input', 'name' => 'form_subpage_' . get_class($this) . '_user_open', 'type' => 'submit', 'value' => _('Edit members')),
|
||||
array ('kind' => 'help', 'value' => 'members'));
|
||||
if (!isset($this->attributes['userPassword'][0])) {
|
||||
$return[] = array(
|
||||
array('kind' => 'text', 'text' => _('Password') ),
|
||||
array('kind' => 'input', 'name' => 'form_subpage_' . get_class($this) . '_password_open', 'type' => 'submit', 'value' => _('Set password')));
|
||||
}
|
||||
else {
|
||||
if (isset($this->attributes['userPassword'][0])) {
|
||||
if (pwd_is_enabled($this->attributes['userPassword'][0])) {
|
||||
$lockOption = array('kind' => 'input', 'name' => 'form_subpage_' . get_class($this) . '_attributes_lockPassword', 'type' => 'submit', 'value' => _('Lock password'));
|
||||
}
|
||||
|
@ -198,9 +193,6 @@ class posixGroup extends baseModule {
|
|||
$return[] = array(
|
||||
array('kind' => 'text', 'text' => _('Password') ),
|
||||
array('kind' => 'table', 'value' => array(
|
||||
array(
|
||||
array('kind' => 'input', 'name' => 'form_subpage_' . get_class($this) . '_password_open', 'type' => 'submit', 'value' => _('Change password'))
|
||||
),
|
||||
array($lockOption),
|
||||
array(
|
||||
array('kind' => 'input', 'name' => 'form_subpage_' . get_class($this) . '_attributes_removePassword', 'type' => 'submit', 'value' => _('Remove password'))
|
||||
|
@ -269,28 +261,6 @@ class posixGroup extends baseModule {
|
|||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the password changing dialog.
|
||||
*
|
||||
* @return array meta HTML code
|
||||
*/
|
||||
function display_html_password() {
|
||||
$return[] = array(
|
||||
array('kind' => 'text', 'text' => _('Password') ),
|
||||
array('kind' => 'input', 'name' => 'userPassword', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => ""),
|
||||
array('kind' => 'help', 'value' => 'password'));
|
||||
$return[] = array(
|
||||
array('kind' => 'text', 'text' => _('Repeat password')),
|
||||
array('kind' => 'input', 'name' => 'userPassword2', 'type' => 'password', 'size' => '20', 'maxlength' => '255', 'value' => ""));
|
||||
$return[] = array(
|
||||
array('kind' => 'table', 'value' => array(
|
||||
array(
|
||||
array('kind' => 'input', 'type' => 'submit', 'value' => _('Ok'), 'name' => 'form_subpage_' . get_class($this) . '_attributes_submit'),
|
||||
array('kind' => 'input', 'type' => 'submit', 'value' => _('Back'), 'name' => 'form_subpage_' . get_class($this) . '_attributes_back'),
|
||||
array('kind' => 'text')))));
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns meta data that is interpreted by parent class
|
||||
*
|
||||
|
@ -491,7 +461,6 @@ class posixGroup extends baseModule {
|
|||
* This function fills the $messages variable with output messages from this module.
|
||||
*/
|
||||
function load_Messages() {
|
||||
$this->messages['userPassword'][0] = array('ERROR', _('Password'), _('Please enter the same password in both password-fields.'));
|
||||
$this->messages['userPassword'][1] = array('ERROR', _('Password'), _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!%&/|?{[()]}=@$ !'));
|
||||
$this->messages['gidNumber'][0] = array('INFO', _('GID number'), _('GID number has changed. Please select checkbox to change GID number of users and hosts.'));
|
||||
$this->messages['gidNumber'][2] = array('WARN', _('ID-Number'), _('It is possible that this ID-number is reused. This can cause several problems because files with old permissions might still exist. To avoid this warning set maxUID to a higher value.'));
|
||||
|
@ -697,32 +666,6 @@ class posixGroup extends baseModule {
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Processes user input of the password page.
|
||||
* It checks if all input values are correct and updates the associated LDAP attributes.
|
||||
*
|
||||
* @return array list of info/error messages
|
||||
*/
|
||||
function process_password() {
|
||||
if ($_POST['form_subpage_' . get_class($this) . '_attributes_back']) return array();
|
||||
$errors = array();
|
||||
if ($_POST['userPassword'] != $_POST['userPassword2']) {
|
||||
$errors[] = $this->messages['userPassword'][0];
|
||||
if (!get_preg($_POST['userPassword'], 'password'))
|
||||
$errors[] = $this->messages['userPassword'][1];
|
||||
}
|
||||
else {
|
||||
$pwdPolicyResult = checkPasswordStrength($_POST['userPassword']);
|
||||
if ($pwdPolicyResult === true) {
|
||||
$this->attributes['userPassword'][0] = pwd_hash($_POST['userPassword'], true, $this->moduleSettings['posixAccount_pwdHash'][0]);
|
||||
}
|
||||
else {
|
||||
$errors[] = array('ERROR', $pwdPolicyResult);
|
||||
}
|
||||
}
|
||||
return $errors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of modifications which have to be made to the LDAP account.
|
||||
*
|
||||
|
@ -815,6 +758,34 @@ class posixGroup extends baseModule {
|
|||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method specifies if a module manages password attributes.
|
||||
* @see passwordService::managesPasswordAttributes
|
||||
*
|
||||
* @return boolean true if this module manages password attributes
|
||||
*/
|
||||
public function managesPasswordAttributes() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is called whenever the password should be changed. Account modules
|
||||
* must change their password attributes only if the modules list contains their module name.
|
||||
*
|
||||
* @param String $password new password
|
||||
* @param $modules list of modules for which the password should be changed
|
||||
* @return array list of error messages if any as parameter array for StatusMessage
|
||||
* e.g. return arrray(array('ERROR', 'Password change failed.'))
|
||||
* @see passwordService::passwordChangeRequested
|
||||
*/
|
||||
public function passwordChangeRequested($password, $modules) {
|
||||
if (!in_array(get_class($this), $modules)) {
|
||||
return array();
|
||||
}
|
||||
$this->attributes['userPassword'][0] = pwd_hash($password, true, $this->moduleSettings['posixAccount_pwdHash'][0]);
|
||||
return array();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
Loading…
Reference in New Issue