changed error message handling in posixGroup

This commit is contained in:
katagia 2004-09-20 19:33:31 +00:00
parent 25f5991ec0
commit 0aa6874931
2 changed files with 44 additions and 13 deletions

View File

@ -57,11 +57,12 @@ class baseModule {
/** contains all ldap attributes which are loaded from ldap */
var $orig;
/** contains the last error messages of the module.
* Ths variable is needed because we don't want to make
* unnecesarry checks when a attributes wasn't changed */
/** contains all error messages wich were troggered*/
var $errors;
/** contains all error messages of a module */
var $errormessages;
/**
* Creates a new base module class
*
@ -80,6 +81,8 @@ class baseModule {
*/
function init($base) {
$this->base = $base;
// load error messages
$this->loadErrorMessages();
// Create Arrays with ldap attributes
$this->attributes =& $_SESSION[$this->base]->get_module_attributes(get_class($this));
$this->orig =& $_SESSION[$this->base]->get_module_attributes(get_class($this), true);
@ -97,6 +100,7 @@ class baseModule {
*/
function load_ldap_attributes($attr) {
// Load attributes which are displayed
$objectClassName = $this->attributes['objectClass'];
// unset count entries
unset ($attr['count']);
$attributes = array_keys($attr);
@ -114,6 +118,10 @@ class baseModule {
}
}
}
$this->attributes['objectClass'] = $objectClassName;
if (in_array($objectClassName[0], $attr['objectClass']))
$this->orig['objectClass'] = $objectClassName;
else $this->orig['objectClass'] = array();
}
/**
@ -134,6 +142,11 @@ class baseModule {
return $this->scope;
}
/**
* This function is needed to avoid error messages */
function loadErrorMessages() {
}
/**
* Returns true if this module fits for the current scope.
*

View File

@ -35,6 +35,23 @@ class posixGroup extends baseModule {
parent::baseModule($scope);
}
/** this functin fills the error message array with messages
**/
function loadErrorMessages() {
//$this->errormessages['minGID'][0] = array('ERROR', _('Minimum GID number'), _('Minimum GID number is invalid or empty!'));
//$this->errormessages['maxGID'][0] = array('ERROR', _('Maximum GID number'), _('Maximum GID number is invalid or empty!'));
//$this->errormessages['cmpGID'][1] = array('ERROR', _('Maximum GID number'), _('Maximum GID number must be greater than minimum GID number!'));
$this->errormessages['userPassword'][0] = array('ERROR', _('Password'), _('Please enter the same password in both password-fields.'));
$this->errormessages['userPassword'][1] = array('ERROR', _('Password'), _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !'));
$this->errormessages['gidNumber'][0] = array('INFO', _('GID number'), _('GID number has changed. Please select checkbox to change GID number of users and hosts.'));
$this->errormessages['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.'));
$this->errormessages['gidNumber'][3] = array('ERROR', _('ID-Number'), _('No free ID-Number!'));
$this->errormessages['gidNumber'][4] = array('ERROR', _('ID-Number'), _('ID is already in use'));
$this->errormessages['cn'][0] = array('WARN', _('Groupname'), _('You are using a capital letters. This can cause problems because windows isn\'t case-sensitive.'));
$this->errormessages['cn'][1] = array('WARN', _('Groupname'), _('Groupname in use. Selected next free groupname.'));
$this->errormessages['cn'][2] = array('ERROR', _('Groupname'), _('Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !'));
}
/**
* Returns meta data that is interpreted by parent class
*
@ -347,8 +364,6 @@ class posixGroup extends baseModule {
/* Write variables into object and do some regexp checks
*/
function proccess_attributes($post, $profile=false) {
if ($this->orig['gidNumber'][0]!='' && $post['gidNumber']!=$this->attributes['gidNumber'][0])
$errors['gidNumber'][] = array('INFO', _('GID number'), _('GID number has changed. Please select checkbox to change GID number of users and hosts.'));
// Load attributes
$this->attributes['description'][0] = $post['description'];
if ($post['userPassword_no']) $this->userPassword_no=true;
@ -360,12 +375,12 @@ class posixGroup extends baseModule {
else $this->changegids=false;
if (isset($post['userPassword'])) {
if ($post['userPassword'] != $post['userPassword2']) {
$errors['userPassword'][] = array('ERROR', _('Password'), _('Please enter the same password in both password-fields.'));
$errors['userPassword'][] = $this->errormessages['userPassword'][0];
unset ($post['userPassword2']);
}
else $this->userPassword($post['userPassword']);
if (!ereg('^([a-z]|[A-Z]|[0-9]|[\|]|[\#]|[\*]|[\,]|[\.]|[\;]|[\:]|[\_]|[\-]|[\+]|[\!]|[\%]|[\&]|[\/]|[\?]|[\{]|[\[]|[\(]|[\)]|[\]]|[\}])*$', $this->userPassword()))
$errors['userPassword'][] = array('ERROR', _('Password'), _('Password contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and #*,.;:_-+!$%&/|?{[()]}= !'));
$errors['userPassword'][] = $this->errormessages['userPassword'][1];
}
if ($post['genpass']) $this->userPassword(genpasswd());
if ($this->attributes['gidNumber'][0]!=$post['gidNumber'] || ($this->errors['gidNumber'][0]='ERROR')) {
@ -398,10 +413,10 @@ class posixGroup extends baseModule {
$i = intval($minID);
while (in_array($i, $gids)) $i++;
if ($i>$maxID)
$errors['gidNumber'][] = array('ERROR', _('ID-Number'), _('No free ID-Number!'));
$errors['gidNumber'][] = $this->errormessages['gidNumber'][3];
else {
$this->attributes['gidNumber'][0] = $i;
$errors['gidNumber'][] = 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.'));
$errors['gidNumber'][] = $this->errormessages['gidNumber'][2];
}
}
else $this->attributes['gidNumber'][0] = $minID;
@ -420,7 +435,7 @@ class posixGroup extends baseModule {
if ((in_array($this->attributes['gidNumber'][0], $gids)) && $this->orig['gidNumber'][0]=='') $errors['gidNumber'][] = array('ERROR', _('ID-Number'), _('ID is already in use'));
// id-number is in use, account is existing account and id-number is not used by itself
if ((in_array($this->attributes['gidNumber'][0], $gids)) && $this->orig['gidNumber'][0]!='' && ($this->orig['gidNumber'][0] != $this->attributes['gidNumber'][0]) ) {
$errors['gidNumber'][] = array('ERROR', _('ID-Number'), _('ID is already in use'));
$errors['gidNumber'][] = $this->errormessages['gidNumber'][4];
$this->attributes['gidNumber'][0] = $this->orig['gidNumber'][0];
}
}
@ -429,10 +444,10 @@ class posixGroup extends baseModule {
if ($this->attributes['cn'][0]!=$post['cn'] || ($this->errors['cn'][0]='ERROR')) {
$this->attributes['cn'][0] = $post['cn'];
if (($this->attributes['cn'][0] != $post['cn']) && ereg('[A-Z]$', $post['cn']))
$errors['cn'][] = array('WARN', _('Groupname'), _('You are using a capital letters. This can cause problems because windows isn\'t case-sensitive.'));
$errors['cn'][] = $this->errormessages['cn'][0];
// Check if Groupname contains only valid characters
if ( !ereg('^([a-z]|[A-Z]|[0-9]|[.]|[-]|[_])+$', $this->attributes['cn'][0]))
$errors['cn'][] = array('ERROR', _('Groupname'), _('Groupname contains invalid characters. Valid characters are: a-z, A-Z, 0-9 and .-_ !'));
$errors['cn'][] = $this->errormessages['cn'][2];
// Create automatic useraccount with number if original user already exists
// Reset name to original name if new name is in use
// Set username back to original name if new username is in use
@ -472,8 +487,11 @@ class posixGroup extends baseModule {
}
// Show warning if lam has changed username
if ($this->attributes['cn'][0] != $post['cn']) {
$errors['cn'][] = array('WARN', _('Groupname'), _('Groupname in use. Selected next free groupname.'));
$errors['cn'][] = $this->errormessages['cn'][0];
}
// show info when gidnumber has changed
if (($this->orig['gidNumber'][0]!=$this->attributes['gidNumber'][0]) && $this->orig['gidNumber'][0]!='' && $post['gidNumber']!=$this->attributes['gidNumber'][0])
$errors['gidNumber'][] = $this->errormessages['gidNumber'][0];
}
}
// Return error-messages