added profile check
This commit is contained in:
parent
cce1d5fdc4
commit
4d5ce3bf80
|
@ -54,6 +54,22 @@ $Id$
|
||||||
*/
|
*/
|
||||||
class shadowAccount extends baseModule {
|
class shadowAccount extends baseModule {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new shadowAccount object.
|
||||||
|
*
|
||||||
|
* @param string $scope account type (user, group, host)
|
||||||
|
*/
|
||||||
|
function shadowAccount($scope) {
|
||||||
|
// error messages for input checks
|
||||||
|
$this->messages['shadowMin'] = array('ERROR', _('Password minage'), _('Password minage must be are natural number.'));
|
||||||
|
$this->messages['shadowMax'] = array('ERROR', _('Password maxage'), _('Password maxage must be are natural number.'));
|
||||||
|
$this->messages['inactive'] = array('ERROR', _('Password Expire'), _('Password expire must be are natural number or -1.'));
|
||||||
|
$this->messages['shadowWarning'] = array('ERROR', _('Password warn'), _('Password warn must be are natural number.'));
|
||||||
|
$this->messages['shadow_cmp'] = array('ERROR', _('Password maxage'), _('Password maxage must bigger as Password Minage.'));
|
||||||
|
// call parent constructor
|
||||||
|
parent::baseModule($scope);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns meta data that is interpreted by parent class
|
* Returns meta data that is interpreted by parent class
|
||||||
*
|
*
|
||||||
|
@ -67,6 +83,47 @@ class shadowAccount extends baseModule {
|
||||||
$return["alias"] = _('Shadow');
|
$return["alias"] = _('Shadow');
|
||||||
// module dependencies
|
// module dependencies
|
||||||
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
|
$return['dependencies'] = array('depends' => array('posixAccount'), 'conflicts' => array());
|
||||||
|
// lists for expiration date
|
||||||
|
$day = array(); $mon = array(); $year = array();
|
||||||
|
for ( $i=1; $i<=31; $i++ ) $day[] = $i;
|
||||||
|
for ( $i=1; $i<=12; $i++ ) $mon[] = $i;
|
||||||
|
for ( $i=2003; $i<=2030; $i++ ) $year[] = $i;
|
||||||
|
$return['profile_options'] = array(
|
||||||
|
// password warning
|
||||||
|
array(
|
||||||
|
0 => array('kind' => 'text', 'text' => _('Password warn')),
|
||||||
|
1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowWarning', 'type' => 'text', 'size' => '4', 'maxlength' => '4', 'value' => ""),
|
||||||
|
2 => array('kind' => 'help', 'value' => 'TODO')),
|
||||||
|
// password expiration
|
||||||
|
array(
|
||||||
|
0 => array('kind' => 'text', 'text' => _('Password expire')),
|
||||||
|
1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowInactive', 'type' => 'text', 'size' => '4', 'maxlength' => '4', 'value' => ""),
|
||||||
|
2 => array('kind' => 'help', 'value' => 'TODO')),
|
||||||
|
// minimum password age
|
||||||
|
array(
|
||||||
|
0 => array('kind' => 'text', 'text' => _('Minimum password age')),
|
||||||
|
1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowMin', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => ""),
|
||||||
|
2 => array('kind' => 'help', 'value' => 'TODO')),
|
||||||
|
// maximum password age
|
||||||
|
array(
|
||||||
|
0 => array('kind' => 'text', 'text' => _('Maximum password age')),
|
||||||
|
1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowMax', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => ""),
|
||||||
|
2 => array('kind' => 'help', 'value' => 'TODO')),
|
||||||
|
// expiration date
|
||||||
|
array(
|
||||||
|
0 => array('kind' => 'text', 'text' => _('Expire day')),
|
||||||
|
1 => array('kind' => 'table', 'value' => array(
|
||||||
|
0 => array (
|
||||||
|
0 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_day',
|
||||||
|
'options' => $day, 'options_selectd' => ""),
|
||||||
|
1 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_mon',
|
||||||
|
'options' => $mon, 'options_selectd' => ""),
|
||||||
|
2 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_yea',
|
||||||
|
'options' => $year, 'options_selectd' => "")
|
||||||
|
)
|
||||||
|
)),
|
||||||
|
2 => array('kind' => 'help', 'value' => 'TODO'))
|
||||||
|
);
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,6 +161,13 @@ class shadowAccount extends baseModule {
|
||||||
*/
|
*/
|
||||||
var $orig;
|
var $orig;
|
||||||
|
|
||||||
|
/** regular expression for numeric values */
|
||||||
|
var $regex_number = '^([0-9])*$';
|
||||||
|
/** regular expression for shasowInactive */
|
||||||
|
var $regex_inactive = '^(([-][1])|([0-9]*))$';
|
||||||
|
|
||||||
|
/** list of possible error messages */
|
||||||
|
var $messages = array();
|
||||||
|
|
||||||
function module_ready() {
|
function module_ready() {
|
||||||
return true;
|
return true;
|
||||||
|
@ -204,12 +268,11 @@ class shadowAccount extends baseModule {
|
||||||
$this->attributes['shadowExpire'][0] = intval(mktime(10, 0, 0, $post['shadowExpire_mon'],
|
$this->attributes['shadowExpire'][0] = intval(mktime(10, 0, 0, $post['shadowExpire_mon'],
|
||||||
$post['shadowExpire_day'], $post['shadowExpire_yea'])/3600/24);
|
$post['shadowExpire_day'], $post['shadowExpire_yea'])/3600/24);
|
||||||
|
|
||||||
if ( !ereg('^([0-9])*$', $this->attributes['shadowMin'][0])) $errors['shadowMin'][] = array('ERROR', _('Password minage'), _('Password minage must be are natural number.'));
|
if ( !ereg($this->regex_number, $this->attributes['shadowMin'][0])) $errors['shadowMin'][] = $this->messages['shadowMin'];
|
||||||
if ( $this->attributes['shadowMin'][0] > $this->attributes['shadowMax'][0]) $errors['shadowMin'][] = array('ERROR', _('Password maxage'), _('Password maxage must bigger as Password Minage.'));
|
if ( !ereg($this->regex_number, $this->attributes['shadowMax'][0])) $errors['shadowMax'][] = $this->messages['shadowMax'];
|
||||||
if ( !ereg('^([0-9]*)$', $this->attributes['shadowMax'][0])) $errors['shadowMax'][] = array('ERROR', _('Password maxage'), _('Password maxage must be are natural number.'));
|
if ( $this->attributes['shadowMin'][0] > $this->attributes['shadowMax'][0]) $errors['shadowMin'][] = $this->messages['shadow_cmp'];
|
||||||
if ( !ereg('^(([-][1])|([0-9]*))$', $this->attributes['shadowInactive'][0]))
|
if ( !ereg($this->regex_inactive, $this->attributes['shadowInactive'][0])) $errors['shadowInactive'][] = $this->messages['inactive'];
|
||||||
$errors['shadowInactive'][] = array('ERROR', _('Password Expire'), _('Password expire must be are natural number or -1.'));
|
if ( !ereg($this->regex_number, $this->attributes['shadowWarning'][0])) $errors['shadowWarning'][] = $this->messages['shadowWarning'];
|
||||||
if ( !ereg('^([0-9]*)$', $this->attributes['shadowWarning'][0])) $errors['shadowWarning'][] = array('ERROR', _('Password warn'), _('Password warn must be are natural number.'));
|
|
||||||
if (is_array($errors)) return $errors;
|
if (is_array($errors)) return $errors;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -228,12 +291,12 @@ class shadowAccount extends baseModule {
|
||||||
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Password expire') ),
|
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Password expire') ),
|
||||||
1 => array ( 'kind' => 'input', 'name' => 'shadowInactive', 'type' => 'text', 'size' => '4', 'maxlength' => '4', 'value' => $this->attributes['shadowInactive'][0] ),
|
1 => array ( 'kind' => 'input', 'name' => 'shadowInactive', 'type' => 'text', 'size' => '4', 'maxlength' => '4', 'value' => $this->attributes['shadowInactive'][0] ),
|
||||||
2 => array ( 'kind' => 'help', 'value' => 'shadowInactive' ));
|
2 => array ( 'kind' => 'help', 'value' => 'shadowInactive' ));
|
||||||
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Maximum password age') ),
|
|
||||||
1 => array ( 'kind' => 'input', 'name' => 'shadowMax', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => $this->attributes['shadowMax'][0] ),
|
|
||||||
2 => array ( 'kind' => 'help', 'value' => 'shadowMax' ));
|
|
||||||
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Minimum password age') ),
|
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Minimum password age') ),
|
||||||
1 => array ( 'kind' => 'input', 'name' => 'shadowMin', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => $this->attributes['shadowMin'][0] ),
|
1 => array ( 'kind' => 'input', 'name' => 'shadowMin', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => $this->attributes['shadowMin'][0] ),
|
||||||
2 => array ( 'kind' => 'help', 'value' => 'shadowMin' ));
|
2 => array ( 'kind' => 'help', 'value' => 'shadowMin' ));
|
||||||
|
$return[] = array ( 0 => array ( 'kind' => 'text', 'text' => _('Maximum password age') ),
|
||||||
|
1 => array ( 'kind' => 'input', 'name' => 'shadowMax', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => $this->attributes['shadowMax'][0] ),
|
||||||
|
2 => array ( 'kind' => 'help', 'value' => 'shadowMax' ));
|
||||||
|
|
||||||
for ( $i=1; $i<=31; $i++ ) $mday[] = $i;
|
for ( $i=1; $i<=31; $i++ ) $mday[] = $i;
|
||||||
for ( $i=1; $i<=12; $i++ ) $mon[] = $i;
|
for ( $i=1; $i<=12; $i++ ) $mon[] = $i;
|
||||||
|
@ -254,50 +317,19 @@ class shadowAccount extends baseModule {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_profileOptions() {
|
/**
|
||||||
$return = array();
|
* Checks input values of account profiles.
|
||||||
// password warning
|
*
|
||||||
$return[] = array(0 => array('kind' => 'text', 'text' => _('Password warn')),
|
* @return profile elements
|
||||||
1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowWarning', 'type' => 'text', 'size' => '4', 'maxlength' => '4', 'value' => ""),
|
*/
|
||||||
2 => array('kind' => 'help', 'value' => 'TODO'));
|
|
||||||
// password expiration
|
|
||||||
$return[] = array(0 => array('kind' => 'text', 'text' => _('Password expire')),
|
|
||||||
1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowInactive', 'type' => 'text', 'size' => '4', 'maxlength' => '4', 'value' => ""),
|
|
||||||
2 => array('kind' => 'help', 'value' => 'TODO'));
|
|
||||||
// maximum password age
|
|
||||||
$return[] = array(0 => array('kind' => 'text', 'text' => _('Maximum password age')),
|
|
||||||
1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowMax', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => ""),
|
|
||||||
2 => array('kind' => 'help', 'value' => 'TODO'));
|
|
||||||
// minimum password age
|
|
||||||
$return[] = array(0 => array('kind' => 'text', 'text' => _('Minimum password age')),
|
|
||||||
1 => array('kind' => 'input', 'name' => 'shadowAccount_shadowMin', 'type' => 'text', 'size' => '5', 'maxlength' => '5', 'value' => ""),
|
|
||||||
2 => array('kind' => 'help', 'value' => 'TODO'));
|
|
||||||
// expiration date
|
|
||||||
$day = array(); $mon = array(); $year = array();
|
|
||||||
for ( $i=1; $i<=31; $i++ ) $day[] = $i;
|
|
||||||
for ( $i=1; $i<=12; $i++ ) $mon[] = $i;
|
|
||||||
for ( $i=2003; $i<=2030; $i++ ) $year[] = $i;
|
|
||||||
$return[] = array(
|
|
||||||
0 => array('kind' => 'text', 'text' => _('Expire day')),
|
|
||||||
1 => array('kind' => 'table', 'value' => array(
|
|
||||||
0 => array (
|
|
||||||
0 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_day',
|
|
||||||
'options' => $day, 'options_selectd' => ""),
|
|
||||||
1 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_mon',
|
|
||||||
'options' => $mon, 'options_selectd' => ""),
|
|
||||||
2 => array('kind' => 'select', 'name' => 'shadowAccount_shadowExpire_yea',
|
|
||||||
'options' => $year, 'options_selectd' => "")
|
|
||||||
)
|
|
||||||
)),
|
|
||||||
2 => array('kind' => 'help', 'value' => 'TODO'));
|
|
||||||
return $return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// checks if the values of a new or modified profile are valid
|
|
||||||
// $scope: the account type (user, group, host, ...)
|
|
||||||
// $options: a hash array (name => value) containing the options
|
|
||||||
function check_profileOptions($options) {
|
function check_profileOptions($options) {
|
||||||
return array();
|
$errors = array();
|
||||||
|
if (!ereg($this->regex_number, $options['shadowAccount_shadowMin'][0])) $errors[] = $this->messages['shadowMin'];
|
||||||
|
if (!ereg($this->regex_number, $options['shadowAccount_shadowMax'][0])) $errors[] = $this->messages['shadowMax'];
|
||||||
|
if ($options['shadowAccount_shadowMin'][0] > $options['shadowAccount_shadowMax'][0]) $errors[] = $this->messages['shadow_cmp'];
|
||||||
|
if (!ereg($this->regex_inactive, $options['shadowAccount_shadowInactive'][0])) $errors[] = $this->messages['inactive'];
|
||||||
|
if (!ereg($this->regex_number, $options['shadowAccount_shadowWarning'][0])) $errors[] = $this->messages['shadowWarning'];
|
||||||
|
return $errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
function get_pdfFields($account_type="user") {
|
function get_pdfFields($account_type="user") {
|
||||||
|
|
Loading…
Reference in New Issue