Documentación (wiki)
Wiki de eGroupWare
LDAPStuff

AddressBook / LDAPStuff


The only accepted schema for now is the inetOrgPerson and only that is visible in stock LDAP clients like e.g. the mozilla addressbook. inetOrgPerson is basicly the data of a Person including one address, phone, fax, mobile, private phone, email, url and a companyname.

I propose to use in LDAP:

  • a schema based on the inetOrgPerson (that means all that fields plus some own)
  • two inetOrgPerson record/node for each person in an organisation:
    1. with its private data linked to the other one by its cn (common name), uid (user-id) or an other id outside the inetOrgPerson schema.
    2. with its org-data linked to it's organisation by the organisations name. That record dublicates/mirrors the company address, and the persons names (readonly from stock LDAP clients). It's only genuine data is phone, fax, mobile, email, url.
  • the cn of the privat address should include a '(privat)', so u see the difference between the two in a stock LDAP client
  • we use an other inetOrgPerson (or other schema) record/node for the organisation itself, includeing its address, central phone, fax.
  • the linking of this 3 is done by unique org- and person-id's. These id's are either readonly or outside the inetOrgPerson schema (in an own schema, which includes / is based on the inetOrgPerson schema). I would prefer the last, as this would allow read/write access for other clients.

Why would we need up to 2 inetOrgPerson for one person?
Else your are not able to select private AND buisness mail, phone, fax, address in a stock client.

The eGW GUI / addressbook (and the (new) api-contacts-class) will mix these speparate nodes and display them in a way addbook does it today:
  1. org's containing several persons
  2. persons contained in zero or one org
  3. the contacts-id (which is needed from the api contacts class, is either the org-id or the person-id, which both together have to be unique.


What can we do to have a better match with inetOrpPerson

/* ldap schema (required;allowed attributes):
	top                      (objectClass)
	+-person                 (sn,cn; userPassword,telephoneNumber,description,...)
	| +-organisationalPerson (; title,ou,st,l,telephoneNumber,facsimileTelephoneNumber,street,
	|   |                       internationalISDNNumber,postalOfficeBox,postalCode,postalAddress, ...)
	|   +-inetOrgPerson      (; uid,o,givenName,homePhone,homePostalAddress*,initials*,jpegPhoto*,
	|                           labeledURI*,mail,mobile*,secretary*,manager*,userCertificate*, ...)
	+-country                (c; searchGuide,description)
  • /
/* The left side are the array elements used throughout phpgw, right side are the ldap attributes */ var $stock_contact_fields = array( 'fn' => 'cn', 'n_given' => 'givenname', 'n_family' => 'sn', 'n_middle' => 'phpgwmiddlename', 'n_prefix' => 'phpgwprefix', // inetOrgPerson::initials 'n_suffix' => 'phpgwsuffix', 'sound' => 'phpgwaudio', 'bday' => 'phpgwbirthday', 'note' => 'description', 'tz' => 'phpgwtz', 'geo' => 'phpgwgeo', 'url' => 'phpgwurl', // inetOrgPerson::labeledURI 'pubkey' => 'phpgwpublickey', // inetOrgPerson::userCertificate/userSMIMECertificate/userPKCS12 'org_name' => 'o', 'org_unit' => 'ou', 'title' => 'title', 'adr_one_street' => 'street', 'adr_one_locality' => 'l', 'adr_one_region' => 'st', 'adr_one_postalcode' => 'postalcode', 'adr_one_countryname' => 'co', // country::c 'adr_one_type' => 'phpgwadronetype', 'label' => 'phpgwaddresslabel', // organizationalPerson::postalAddress 'adr_two_street' => 'phpgwadrtwostreet', 'adr_two_locality' => 'phpgwadrtwolocality', 'adr_two_region' => 'phpgwadrtworegion', 'adr_two_postalcode' => 'phpgwadrtwopostalcode', 'adr_two_countryname' => 'phpgwadrtwocountryname', 'adr_two_type' => 'phpgwadrtwotype', 'tel_work' => 'telephonenumber', 'tel_home' => 'homephone', 'tel_voice' => 'phpgwvoicetelephonenumber', 'tel_fax' => 'facsimiletelephonenumber', 'tel_msg' => 'phpgwmsgtelephonenumber', 'tel_cell' => 'phpgwcelltelephonenumber',// inetOrgPerson::mobile 'tel_pager' => 'phpgwpagertelephonenumber', 'tel_bbs' => 'phpgwbbstelephonenumber', 'tel_modem' => 'phpgwmodemtelephonenumber', 'tel_car' => 'phpgwmobiletelephonenumber', 'tel_isdn' => 'phpgwisdnphonenumber', // organizationalPerson::internationalISDNNumber 'tel_video' => 'phpgwvideophonenumber', 'tel_prefer' => 'phpgwpreferphone', 'email' => 'mail', 'email_type' => 'phpgwmailtype', 'email_home' => 'phpgwmailhome', 'email_home_type' => 'phpgwmailhometype' ); var $non_contact_fields = array( 'id' => 'uidnumber', 'lid' => 'uid', 'tid' => 'phpgwcontacttypeid', 'cat_id' => 'phpgwcontactcatid', 'access' => 'phpgwcontactaccess', 'owner' => 'phpgwcontactowner' );

EGroupware Manual



Get EGroupware Manual

Stylite GmbH


Stylite GmbH - The main developer of EGroupware

EGroupware 2010



Inicio de sesión

Nombre de usuario

Contraseña

recordarme

¿No tiene una cuenta?
Registrar por uno ahora

Sourceforge.net


SourceForge.net Logo