X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fpersonal%2Fgeneric%2Fclass_user.inc;h=46ecbc77d434db966131cb7fe6910dbc588d2228;hb=7697f34f9e7b22c3c38d429278e667f46a087f2b;hp=472eddbd0a16f35e3f74a4c5e2810dd4f5c38bb1;hpb=58c767ac2ef06d817759000ed1a67eb6ee5fcbf9;p=gosa.git diff --git a/plugins/personal/generic/class_user.inc b/plugins/personal/generic/class_user.inc index 472eddbd0..46ecbc77d 100644 --- a/plugins/personal/generic/class_user.inc +++ b/plugins/personal/generic/class_user.inc @@ -86,7 +86,7 @@ class user extends plugin /* attribute list for save action */ var $attributes= array("sn", "givenName", "uid", "personalTitle", "academicTitle", "homePostalAddress", "homePhone", "labeledURI", "o", "ou", "dateOfBirth", "gender","preferredLanguage", - "departmentNumber", "employeeNumber", "employeeType", "l", "st", + "departmentNumber", "employeeNumber", "employeeType", "l", "st","jpegPhoto", "roomNumber", "telephoneNumber", "mobile", "pager", "cn", "userPKCS12", "postalAddress", "facsimileTelephoneNumber", "userSMIMECertificate"); @@ -310,8 +310,8 @@ class user extends plugin /* Remove picture? */ if (isset($_POST['picture_remove'])){ + $this->set_picture (); $this->jpegPhoto= "*removed*"; - $this->set_picture ("./images/default.jpg"); $this->is_modified= TRUE; return($smarty->fetch (get_template_path('generic_picture.tpl', TRUE, dirname(__FILE__)))); @@ -455,8 +455,25 @@ class user extends plugin /* Read out data*/ $timeto = $certificate->getvalidto_date(); $timefrom = $certificate->getvalidfrom_date(); - $str = "
CN".preg_replace("/ /", " ", $certificate->getname())."

". - sprintf(_("Certificate is valid from %s to %s and is currently %s."), "".date('d M Y',$timefrom)."","".date('d M Y',$timeto)."", $certificate->isvalid()?""._("valid")."":""._("invalid").""); + + /* Additional info if start end time is '0' */ + $add_str_info = ""; + if($timeto == 0 && $timefrom == 0){ + $add_str_info = "
"._("(Some types of certificates are currently not supported and may be displayed as 'invalid'.)").""; + } + + $str = " + + + + +
CN".preg_replace("/ /", " ", $certificate->getname())."

". + + sprintf(_("Certificate is valid from %s to %s and is currently %s."), + "".date('d M Y',$timefrom)."", + "".date('d M Y',$timeto)."", + $certificate->isvalid()?""._("valid")."": + ""._("invalid")."").$add_str_info; $smarty->assign($cert."info",$str); $smarty->assign($cert."_state","true"); } else { @@ -481,7 +498,7 @@ class user extends plugin $this->pw_storage= $this->config->current['HASH']; } - $temp = passwordMethod::get_available_methods(); + $temp = @passwordMethod::get_available_methods(); $hashes = $temp['name']; $smarty->assign("pwmode", $hashes); @@ -563,8 +580,43 @@ class user extends plugin $og->save (); } + /* Kerberos server defined? */ + if (isset($this->config->data['SERVERS']['KERBEROS'])){ + $cfg= $this->config->data['SERVERS']['KERBEROS']; + } + if (isset($cfg['SERVER']) && function_exists('kadm5_init_with_password')){ + + /* Connect to the admin interface */ + $handle = kadm5_init_with_password($cfg['SERVER'], $cfg['REALM'], + $cfg['ADMIN'], $cfg['PASSWORD']); + + /* Errors? */ + if ($handle === FALSE){ + print_red (_("Kerberos database communication failed")); + return (2); + } + + /* Build user principal, get list of existsing principals */ + $principal= $this->uid."@".$cfg['REALM']; + $principals = kadm5_get_principals($handle); + + /* User exists in database? */ + if (in_array($principal, $principals)){ + + /* Ok. User exists. Remove him/her */ + $ret= kadm5_delete_principal ( $handle, $principal); + if ($ret === FALSE){ + print_red (_("Can't remove user from kerberos database.")); + } + } + + /* Free kerberos admin handle */ + kadm5_destroy($handle); + } + + /* Optionally execute a command after we're done */ - $this->handle_post_events("remove"); + $this->handle_post_events("remove",array("uid" => $this->uid)); } @@ -630,9 +682,6 @@ class user extends plugin /* Only force save of changes .... If this attributes aren't changed, avoid saving. */ - if ($this->use_dob == "1"){ - $this->dateOfBirth= date("Y-m-d", $this->dateOfBirth); - } if($this->gender=="0") $this->gender =""; if($this->preferredLanguage=="0") $this->preferredLanguage =""; @@ -640,6 +689,12 @@ class user extends plugin /* First use parents methods to do some basic fillup in $this->attrs */ plugin::save (); + if ($this->use_dob == "1"){ + /* If it is an array, the generic page has never been loaded - so there's no difference. Using an array would cause an error btw. */ + if(!is_array($this->attrs['dateOfBirth'])) { + $this->attrs['dateOfBirth']= date("Y-m-d", $this->attrs['dateOfBirth']); + } + } /* Remove additional objectClasses */ $tmp= array(); foreach ($this->attrs['objectClass'] as $key => $set){ @@ -785,7 +840,7 @@ class user extends plugin $this->attrs["jpegPhoto"] = $output; } - } elseif(!$this->new) { + } else{ $this->attrs["jpegPhoto"] = array(); } @@ -892,7 +947,7 @@ class user extends plugin /* Ok. User exists. Remove him/her when pw_storage has changed to be NOT kerberos. */ - if ($this->pw_storage != "kerberos"){ + if ($this->pw_storage != $this->config->current['KRBSASL']){ $ret= kadm5_delete_principal ( $handle, $principal); if ($ret === FALSE){ @@ -902,8 +957,8 @@ class user extends plugin } else { - /* User doesn't exists, create it when pw_storage is kerberos. */ - if ($this->pw_storage == "kerberos"){ + /* User doesn't exists, create it when pw_storage is kerberos or SASL. */ + if ($this->pw_storage == "kerberos" || $this->pw_storage == "sasl" ){ $ret= kadm5_create_principal ( $handle, $principal); if ($ret === FALSE){ @@ -919,9 +974,9 @@ class user extends plugin /* Optionally execute a command after we're done */ if ($mode == "add"){ - $this->handle_post_events("add"); + $this->handle_post_events("add",array("uid" => $this->uid)); } elseif ($this->is_modified){ - $this->handle_post_events("modify"); + $this->handle_post_events("modify",array("uid" => $this->uid)); } /* Fix tagging if needed */ @@ -938,7 +993,12 @@ class user extends plugin $message= plugin::check(); /* Assemble cn */ - $this->cn= $this->givenName." ".$this->sn; + if ($this->personalTitle == ""){ + $pt= ""; + } else { + $pt= $this->personalTitle." "; + } + $this->cn= $pt.$this->givenName." ".$this->sn; /* Permissions for that base? */ if (isset($this->config->current['DNMODE']) && $this->config->current['DNMODE'] == "uid"){ @@ -1118,9 +1178,9 @@ class user extends plugin /* Load picture from file to object */ - function set_picture($filename) + function set_picture($filename ="") { - if (!is_file($filename)){ + if (!is_file($filename) || $filename == ""){ $filename= "./images/default.jpg"; $this->jpegPhoto= "*removed*"; } @@ -1204,7 +1264,7 @@ class user extends plugin foreach($attrs['gosaSubtreeACL'] as $attr){ if((preg_match("/:user#/",$attr))||(preg_match("/:all/",$attr))){ - $s = preg_replace("/^.*ou=groups,/","",$attrs['dn']); + $s = preg_replace("/^.*".get_groups_ou().",/","",$attrs['dn']); foreach($this->config->idepartments as $key => $dep) { if(preg_match("/".$s."/i",$key)){ @@ -1284,6 +1344,23 @@ class user extends plugin } } } + + + function PrepareForCopyPaste($source) + { + plugin::PrepareForCopyPaste($source); + + /* Reset certificate information addepted from source user + to avoid setting the same user certificate for the destination user. */ + $this->userPKCS12= ""; + $this->userSMIMECertificate= ""; + $this->userCertificate= ""; + $this->certificateSerialNumber= ""; + $this->old_certificateSerialNumber= ""; + $this->old_userPKCS12= ""; + $this->old_userSMIMECertificate= ""; + $this->old_userCertificate= ""; + } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: