diff --git a/lam/lib/baseModule.inc b/lam/lib/baseModule.inc index 378afc29..71fbfb6c 100644 --- a/lam/lib/baseModule.inc +++ b/lam/lib/baseModule.inc @@ -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. * diff --git a/lam/lib/modules/posixGroup.inc b/lam/lib/modules/posixGroup.inc index 62d2c916..65f9bf4b 100644 --- a/lam/lib/modules/posixGroup.inc +++ b/lam/lib/modules/posixGroup.inc @@ -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