diff --git a/htdocs/admin/ldap.php b/htdocs/admin/ldap.php index 7c9981d5fa05e28d534d2c24b3c00f6bee108f15..15140b45a87ac80a8752b0c7b1ca7e85510f2278 100644 --- a/htdocs/admin/ldap.php +++ b/htdocs/admin/ldap.php @@ -47,6 +47,7 @@ $langs->load("admin"); if (!$user->admin) accessforbidden(); + /* * Actions */ @@ -61,7 +62,6 @@ if ($_GET["action"] == 'setvalue' && $user->admin) { print $db->error(); } - if (! dolibarr_set_const($db, 'LDAP_SERVER_HOST',$_POST["host"])) { print $db->error(); @@ -86,11 +86,7 @@ if ($_GET["action"] == 'setvalue' && $user->admin) { print $db->error(); } - if (! dolibarr_set_const($db, 'LDAP_USER_DN',$_POST["user"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_GROUP_DN',$_POST["group"])) + if (! dolibarr_set_const($db, 'LDAP_SERVER_USE_TLS',$_POST["usetls"])) { print $db->error(); } @@ -102,55 +98,6 @@ if ($_GET["action"] == 'setvalue' && $user->admin) { print $db->error(); } - if (! dolibarr_set_const($db, 'LDAP_CONTACT_DN',$_POST["contact"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_SERVER_USE_TLS',$_POST["usetls"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FIELD_LOGIN',$_POST["fieldlogin"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FIELD_NAME',$_POST["fieldname"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FIELD_FIRSTNAME',$_POST["fieldfirstname"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FIELD_MAIL',$_POST["fieldmail"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FIELD_PHONE',$_POST["fieldphone"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FIELD_FAX',$_POST["fieldfax"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FIELD_MOBILE',$_POST["fieldmobile"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FILTER_CONNECTION',$_POST["filterconnection"])) - { - print $db->error(); - } - if (! dolibarr_set_const($db, 'LDAP_FIELD_LOGIN_SAMBA',$_POST["fieldloginsamba"])) - { - print $db->error(); - } - if ($db->query($sql)) - { - Header("Location: ldap.php"); - exit; - } } @@ -173,18 +120,81 @@ if ($mesg) print '<div class="error">'.$mesg.'</div>'; else print '<br>'; -print '<form method="post" action="ldap.php?action=setvalue">'; +// Onglets +$h = 0; + +$head[$h][0] = DOL_URL_ROOT."/admin/ldap.php"; +$head[$h][1] = $langs->trans("LDAPGlobalParameters"); +$hselected=$h; +$h++; + +if ($conf->global->LDAP_SYNCHRO_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_users.php"; + $head[$h][1] = $langs->trans("LDAPUsersAndGroupsSynchro"); + $h++; +} + +if ($conf->global->LDAP_CONTACT_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_contacts.php"; + $head[$h][1] = $langs->trans("LDAPContactsSynchro"); + $h++; +} + +if ($conf->global->LDAP_MEMBERS_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_members.php"; + $head[$h][1] = $langs->trans("LDAPMembersSynchro"); + $h++; +} + +dolibarr_fiche_head($head, $hselected, $langs->trans("LDAP")); + +$var=true; +$html=new Form($db); + + +print '<form method="post" action="'.$_SERVER["PHP_SELF"].'?action=setvalue">'; print '<table class="noborder" width="100%">'; + +// Liste de synchro actives +print '<tr class="liste_titre">'; +print '<td colspan="3">'.$langs->trans("LDAPSynchronization").'</td>'; +print "</tr>\n"; + +// Synchro utilisateurs/groupes active +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPDnSynchroActive").'</td><td>'; +$arraylist=array(); +$arraylist['0']=$langs->trans("No"); +$arraylist['ldap2dolibarr']=$langs->trans("LDAPToDolibarr"); +$arraylist['dolibarr2ldap']=$langs->trans("DolibarrToLDAP"); +$html->select_array('activesynchro',$arraylist,$conf->global->LDAP_SYNCHRO_ACTIVE); +print '</td><td>'.$langs->trans("LDAPDnSynchroActiveExample"); +if ($conf->global->LDAP_SYNCHRO_ACTIVE && ! $conf->global->LDAP_USER_DN) +{ + print '<br><font class="error">'.$langs->trans("LDAPSetupNotComplete").'</font>'; +} +print '</td></tr>'; + +// Synchro contact active +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPDnContactActive").'</td><td>'; +$arraylist=array(); +$arraylist['0']=$langs->trans("No"); +$arraylist['1']=$langs->trans("DolibarrToLDAP"); +$html->select_array('activecontact',$arraylist,$conf->global->LDAP_CONTACT_ACTIVE); +print '</td><td>'.$langs->trans("LDAPDnContactActiveExample").'</td></tr>'; + + print '<tr class="liste_titre">'; print '<td>'.$langs->trans("Parameter").'</td>'; print '<td>'.$langs->trans("Value").'</td>'; print '<td>'.$langs->trans("Example").'</td>'; print "</tr>\n"; -$var=true; -$html=new Form($db); - // Type $var=!$var; print '<tr '.$bc[$var].'><td>'.$langs->trans("Type").'</td><td>'; @@ -266,172 +276,6 @@ $html->select_array('usetls',$arraylist,$conf->global->LDAP_SERVER_USE_TLS); print '</td><td>'.$langs->trans("LDAPServerUseTLSExample").'</td></tr>'; -print '<tr class="liste_titre">'; -print '<td colspan="3">'.$langs->trans("LDAPSynchronizeUsersAndGroup").'</td>'; -print "</tr>\n"; - -// Synchro utilisateurs/groupes active -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPDnSynchroActive").'</td><td>'; -$arraylist=array(); -$arraylist['0']=$langs->trans("No"); -$arraylist['ldap2dolibarr']=$langs->trans("LDAPToDolibarr"); -$arraylist['dolibarr2ldap']=$langs->trans("DolibarrToLDAP"); -$html->select_array('activesynchro',$arraylist,$conf->global->LDAP_SYNCHRO_ACTIVE); -print '</td><td>'.$langs->trans("LDAPDnSynchroActiveExample").'</td></tr>'; - -// DN Pour les utilisateurs -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPUserDn").'</td><td>'; -print '<input size="25" type="text" name="user" value="'.$conf->global->LDAP_USER_DN.'">'; -print '</td><td>'.$langs->trans("LDAPUserDnExample").'</td></tr>'; - -// Champ de login -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldLogin").'</td><td>'; -if ($conf->global->LDAP_FIELD_LOGIN) -{ - print '<input size="25" type="text" name="fieldlogin" value="'.$conf->global->LDAP_FIELD_LOGIN.'">'; -} -else -{ - print '<input size="25" type="text" name="fieldlogin" value="uid">'; -} -print '</td><td>'.$langs->trans("LDAPFieldLoginExample").'</td></tr>'; - -// Filtre de connexion -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFilterConnection").'</td><td>'; -if ($conf->global->LDAP_FILTER_CONNECTION) -{ - print '<input size="25" type="text" name="filterconnection" value="'.$conf->global->LDAP_FILTER_CONNECTION.'">'; -} -else -{ - print '<input size="25" type="text" name="filterconnection" value="&(objectClass=user)(objectCategory=person)">'; -} -print '</td><td>'.$langs->trans("LDAPFilterConnectionExample").'</td></tr>'; - -// DN pour les groupes -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPGroupDn").'</td><td>'; -print '<input size="25" type="text" name="group" value="'.$conf->global->LDAP_GROUP_DN.'">'; -print '</td><td>'.$langs->trans("LDAPGroupDnExample").'</td></tr>'; - - -print '<tr class="liste_titre">'; -print '<td colspan="3">'.$langs->trans("LDAPSynchronizeContacts").'</td>'; -print "</tr>\n"; - -// Synchro contact active -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPDnContactActive").'</td><td>'; -$arraylist=array(); -$arraylist['0']=$langs->trans("No"); -$arraylist['1']=$langs->trans("Yes"); -$html->select_array('activecontact',$arraylist,$conf->global->LDAP_CONTACT_ACTIVE); -print '</td><td>'.$langs->trans("LDAPDnContactActiveExample").'</td></tr>'; - -// DN Pour les contacts -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPContactDn").'</td><td>'; -print '<input size="25" type="text" name="contact" value="'.$conf->global->LDAP_CONTACT_DN.'">'; -print '</td><td>'.$langs->trans("LDAPContactDnExample").'</td></tr>'; - -print '<tr class="liste_titre">'; -print '<td colspan="3">'.$langs->trans("LDAPAttributes").'</td>'; -print "</tr>\n"; - -// Login -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldLoginSamba").'</td><td>'; -if ($conf->global->LDAP_FIELD_LOGIN_SAMBA) -{ - print '<input size="25" type="text" name="fieldloginsamba" value="'.$conf->global->LDAP_FIELD_LOGIN_SAMBA.'">'; -} -else -{ - print '<input size="25" type="text" name="fieldloginsamba" value="samaccountname">'; -} -print '</td><td>'.$langs->trans("LDAPFieldLoginSambaExample").'</td></tr>'; - -// Name -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldName").'</td><td>'; -if ($conf->global->LDAP_FIELD_NAME) -{ - print '<input size="25" type="text" name="fieldname" value="'.$conf->global->LDAP_FIELD_NAME.'">'; -} -else -{ - print '<input size="25" type="text" name="fieldname" value="sn">'; -} -print '</td><td>'.$langs->trans("LDAPFieldNameExample").'</td></tr>'; - -// Firstname -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldFirstName").'</td><td>'; -if ($conf->global->LDAP_FIELD_FIRSTNAME) -{ - print '<input size="25" type="text" name="fieldfirstname" value="'.$conf->global->LDAP_FIELD_FIRSTNAME.'">'; -} -else -{ - print '<input size="25" type="text" name="fieldfirstname" value="givenname">'; -} -print '</td><td>'.$langs->trans("LDAPFieldFirstNameExample").'</td></tr>'; - -// Mail -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldMail").'</td><td>'; -if ($conf->global->LDAP_FIELD_MAIL) -{ - print '<input size="25" type="text" name="fieldmail" value="'.$conf->global->LDAP_FIELD_MAIL.'">'; -} -else -{ - print '<input size="25" type="text" name="fieldmail" value="mail">'; -} -print '</td><td>'.$langs->trans("LDAPFieldMailExample").'</td></tr>'; - -// Phone -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldPhone").'</td><td>'; -if ($conf->global->LDAP_FIELD_PHONE) -{ - print '<input size="25" type="text" name="fieldphone" value="'.$conf->global->LDAP_FIELD_PHONE.'">'; -} -else -{ - print '<input size="25" type="text" name="fieldphone" value="telephonenumber">'; -} -print '</td><td>'.$langs->trans("LDAPFieldPhoneExample").'</td></tr>'; - -// Fax -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldFax").'</td><td>'; -if ($conf->global->LDAP_FIELD_FAX) -{ - print '<input size="25" type="text" name="fieldfax" value="'.$conf->global->LDAP_FIELD_FAX.'">'; -} -else -{ - print '<input size="25" type="text" name="fieldfax" value="facsimiletelephonenumber">'; -} -print '</td><td>'.$langs->trans("LDAPFieldFaxExample").'</td></tr>'; - -// Mobile -$var=!$var; -print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldMobile").'</td><td>'; -if ($conf->global->LDAP_FIELD_MOBILE) -{ - print '<input size="25" type="text" name="fieldmobile" value="'.$conf->global->LDAP_FIELD_MOBILE.'">'; -} -else -{ - print '<input size="25" type="text" name="fieldmobile" value="mobile">'; -} -print '</td><td>'.$langs->trans("LDAPFieldMobileExample").'</td></tr>'; print '<tr><td colspan="3" align="center"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td></tr>'; @@ -439,6 +283,8 @@ print '</table>'; print '</form>'; +print '</div>'; + /* @@ -446,84 +292,75 @@ print '</form>'; */ if (function_exists("ldap_connect")) { - if ($conf->global->LDAP_SERVER_HOST) + if ($conf->global->LDAP_SERVER_HOST && $conf->global->LDAP_ADMIN_DN && $conf->global->LDAP_ADMIN_PASS) { - print '<a class="tabAction" href="ldap.php?action=test">'.$langs->trans("LDAPTestConnect").'</a><br><br>'; + print '<a class="tabAction" href="'.$_SERVER["PHP_SELF"].'?action=test">'.$langs->trans("LDAPTestConnect").'</a><br><br>'; } - - - if ($conf->global->LDAP_SERVER_HOST && $conf->global->LDAP_ADMIN_DN && $conf->global->LDAP_ADMIN_PASS && $_GET["action"] == 'test') + + if ($_GET["action"] == 'test') { - $ldap = New AuthLdap(); - // Test ldap_connect - // ce test n'est pas fiable car une ressource est constamment retourn�e - // il faut se fier au test ldap_bind + $ldap = new AuthLdap(); // Les parametres sont pass�s et r�cup�r�s via $conf + $ds = $ldap->connect(); if ($ds) { - print img_picto('','info'); - print $langs->trans("LDAPTestOK").'<br>'; - } - else - { - print img_picto('','alerte'); - print $langs->trans("LDAPTestKO").'<br>'; - print "<br>"; - print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText; - print "<br>"; - } + // Test ldap_bind + $bind = $ldap->bind(); + if ($bind) + { + print img_picto('','info').' '; + print '<font class="ok">'.$langs->trans("LDAPTCPConnectOK",$conf->global->LDAP_SERVER_HOST,$conf->global->LDAP_SERVER_PORT).'</font><br>'; + } + else + { + print img_picto('','error').' '; + print $langs->trans("LDAPTCPConnectKO",$conf->global->LDAP_SERVER_HOST,$conf->global->LDAP_SERVER_PORT).' : '; + print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText; + print "<br>"; + } - if ($ds) - { // Test ldap_getversion if (($ldap->getVersion() == 3)) { - print img_picto('','info'); - print $langs->trans("LDAPSetupForVersion3").'<br>'; + print img_picto('','info').' '; + print '<font class="ok">'.$langs->trans("LDAPSetupForVersion3").'</font><br>'; } else { - print img_picto('','info'); + print img_picto('','info').' '; print $langs->trans("LDAPSetupForVersion2").'<br>'; } - - // Test ldap_bind - $bind = $ldap->bind(); - - if ($bind) + + // Test ldap_unbind + $unbind = $ldap->unbind(); + + if ($unbind) { - print img_picto('','info'); - print "Connexion au dn $dn r�ussi<br>"; + print img_picto('','info').' '; + print '<font class="ok">'.$langs->trans("LDAPUnbindSuccessfull").'</font><br>'; } else { - print img_picto('','alerte'); - print "Connexion au dn $dn rat� : "; - print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText; + print img_picto('','error').' '; + print $langs->trans("LDAPUnbindFailed"); print "<br>"; + print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText; } - // Test ldap_unbind - $unbind = $ldap->unbind(); - - if ($unbind) - { - print img_picto('','info'); - print "D�connection du dn $dn r�ussi<br>"; - } - else - { - print img_picto('','alerte'); - print "D�connection du dn $dn rat�"; - print "<br>"; - print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText; - } } + else + { + print img_picto('','error').' '; + print $langs->trans("LDAPTCPConnectKO",$conf->global->LDAP_SERVER_HOST,$conf->global->LDAP_SERVER_PORT).'<br>'; + print "<br>"; + print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText; + print "<br>"; + } + } } $db->close(); llxFooter('$Date$ - $Revision$'); - ?> diff --git a/htdocs/admin/ldap_contacts.php b/htdocs/admin/ldap_contacts.php new file mode 100644 index 0000000000000000000000000000000000000000..abc9d41f3055178539c68a583598d0d0f3eaa5a7 --- /dev/null +++ b/htdocs/admin/ldap_contacts.php @@ -0,0 +1,140 @@ +<?php +/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> + * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> + * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> + * Copyright (C) 2005 Regis Houssin <regis.houssin@cap-networks.com> + * Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + */ + +/** + \file htdocs/admin/ldap.php + \ingroup ldap + \brief Page d'administration/configuration du module Ldap + \version $Revision$ + \remarks Exemple configuration : + LDAP_SERVER_HOST Serveur LDAP 192.168.1.50 + LDAP_SERVER_PORT Port LDAP 389 + LDAP_ADMIN_DN Administrateur LDAP cn=adminldap,dc=societe,dc=com + LDAP_ADMIN_PASS Mot de passe xxxxxxxx + LDAP_USER_DN DN des utilisateurs ou=users,dc=societe,dc=com + LDAP_GROUP_DN DN des groupes ou=groups,dc=societe,dc=com + LDAP_CONTACT_DN DN des contacts ou=contacts,dc=societe,dc=com + LDAP_SERVER_TYPE Type Openldap +*/ + +require("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/lib/authldap.lib.php"); + +$langs->load("admin"); + +if (!$user->admin) + accessforbidden(); + + +/* + * Actions + */ + +if ($_GET["action"] == 'setvalue' && $user->admin) +{ + +} + + + +/* + * Visu + */ + +llxHeader(); + +print_fiche_titre($langs->trans("LDAPSetup"),'','setup'); + +// Test si fonction LDAP actives +if (! function_exists("ldap_connect")) +{ + $mesg=$langs->trans("LDAPFunctionsNotAvailableOnPHP"); +} + +if ($mesg) print '<div class="error">'.$mesg.'</div>'; +else print '<br>'; + + +// Onglets +$h = 0; + +$head[$h][0] = DOL_URL_ROOT."/admin/ldap.php"; +$head[$h][1] = $langs->trans("LDAPGlobalParameters"); +$h++; + +if ($conf->global->LDAP_SYNCHRO_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_users.php"; + $head[$h][1] = $langs->trans("LDAPUsersAndGroupsSynchro"); + $h++; +} + +if ($conf->global->LDAP_CONTACT_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_contacts.php"; + $head[$h][1] = $langs->trans("LDAPContactsSynchro"); + $hselected=$h; + $h++; +} + +if ($conf->global->LDAP_MEMBERS_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_members.php"; + $head[$h][1] = $langs->trans("LDAPMembersSynchro"); + $h++; +} + +dolibarr_fiche_head($head, $hselected, $langs->trans("LDAP")); + + +print '<form method="post" action="'.$_SERVER["PHP_SELF"].'?action=setvalue">'; + +print '<table class="noborder" width="100%">'; + +print '<tr class="liste_titre">'; +print '<td colspan="3">'.$langs->trans("LDAPSynchronizeContacts").'</td>'; +print "</tr>\n"; + +$var=true; +$html=new Form($db); + + +// Not available +print '<tr '.$bc[!$var].'><td colspan="3">'.$langs->trans("LDAPParametersAreStillHardCoded").'</td></tr>'; + + +print '<tr><td colspan="3" align="center"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td></tr>'; +print '</table>'; + +print '</form>'; + +print '</div>'; + + +$db->close(); + +llxFooter('$Date$ - $Revision$'); + +?> diff --git a/htdocs/admin/ldap_users.php b/htdocs/admin/ldap_users.php new file mode 100644 index 0000000000000000000000000000000000000000..3a64592558ac23c0e2cc36e5f2f7efdf9b382354 --- /dev/null +++ b/htdocs/admin/ldap_users.php @@ -0,0 +1,283 @@ +<?php +/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> + * Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org> + * Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be> + * Copyright (C) 2005 Regis Houssin <regis.houssin@cap-networks.com> + * Copyright (C) 2006 Laurent Destailleur <eldy@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + * $Source$ + */ + +/** + \file htdocs/admin/ldap.php + \ingroup ldap + \brief Page d'administration/configuration du module Ldap + \version $Revision$ + \remarks Exemple configuration : + LDAP_SERVER_HOST Serveur LDAP 192.168.1.50 + LDAP_SERVER_PORT Port LDAP 389 + LDAP_ADMIN_DN Administrateur LDAP cn=adminldap,dc=societe,dc=com + LDAP_ADMIN_PASS Mot de passe xxxxxxxx + LDAP_USER_DN DN des utilisateurs ou=users,dc=societe,dc=com + LDAP_GROUP_DN DN des groupes ou=groups,dc=societe,dc=com + LDAP_CONTACT_DN DN des contacts ou=contacts,dc=societe,dc=com + LDAP_SERVER_TYPE Type Openldap +*/ + +require("./pre.inc.php"); +require_once(DOL_DOCUMENT_ROOT."/lib/authldap.lib.php"); + +$langs->load("admin"); + +if (!$user->admin) + accessforbidden(); + + +/* + * Actions + */ + +if ($_GET["action"] == 'setvalue' && $user->admin) +{ + if (! dolibarr_set_const($db, 'LDAP_USER_DN',$_POST["user"])) + { + print $db->error(); + } + if (! dolibarr_set_const($db, 'LDAP_GROUP_DN',$_POST["group"])) + { + print $db->error(); + } + if (! dolibarr_set_const($db, 'LDAP_FIELD_LOGIN',$_POST["fieldlogin"])) + { + print $db->error(); + } + if (! dolibarr_set_const($db, 'LDAP_FILTER_CONNECTION',$_POST["filterconnection"])) + { + print $db->error(); + } +} + + + +/* + * Visu + */ + +llxHeader(); + +print_fiche_titre($langs->trans("LDAPSetup"),'','setup'); + +// Test si fonction LDAP actives +if (! function_exists("ldap_connect")) +{ + $mesg=$langs->trans("LDAPFunctionsNotAvailableOnPHP"); +} + +if ($mesg) print '<div class="error">'.$mesg.'</div>'; +else print '<br>'; + + +// Onglets +$h = 0; + +$head[$h][0] = DOL_URL_ROOT."/admin/ldap.php"; +$head[$h][1] = $langs->trans("LDAPGlobalParameters"); +$h++; + +if ($conf->global->LDAP_SYNCHRO_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_users.php"; + $head[$h][1] = $langs->trans("LDAPUsersAndGroupsSynchro"); + $hselected=$h; + $h++; +} + +if ($conf->global->LDAP_CONTACT_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_contacts.php"; + $head[$h][1] = $langs->trans("LDAPContactsSynchro"); + $h++; +} + +if ($conf->global->LDAP_MEMBERS_ACTIVE) +{ + $head[$h][0] = DOL_URL_ROOT."/admin/ldap_members.php"; + $head[$h][1] = $langs->trans("LDAPMembersSynchro"); + $h++; +} + +dolibarr_fiche_head($head, $hselected, $langs->trans("LDAP")); + + +print '<form method="post" action="'.$_SERVER["PHP_SELF"].'?action=setvalue">'; + +print '<table class="noborder" width="100%">'; + +$var=true; +$html=new Form($db); + + +print '<tr class="liste_titre">'; +print '<td colspan="3">'.$langs->trans("LDAPSynchronizeUsersAndGroup").'</td>'; +print "</tr>\n"; + +// DN Pour les utilisateurs +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPUserDn").'</td><td>'; +print '<input size="38" type="text" name="user" value="'.$conf->global->LDAP_USER_DN.'">'; +print '</td><td>'.$langs->trans("LDAPUserDnExample").'</td></tr>'; + +// DN pour les groupes +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPGroupDn").'</td><td>'; +print '<input size="38" type="text" name="group" value="'.$conf->global->LDAP_GROUP_DN.'">'; +print '</td><td>'.$langs->trans("LDAPGroupDnExample").'</td></tr>'; + +// Filtre de connexion +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFilterConnection").'</td><td>'; +if ($conf->global->LDAP_FILTER_CONNECTION) +{ + print '<input size="38" type="text" name="filterconnection" value="'.$conf->global->LDAP_FILTER_CONNECTION.'">'; +} +else +{ + print '<input size="38" type="text" name="filterconnection" value="&(objectClass=user)(objectCategory=person)">'; +} +print '</td><td>'.$langs->trans("LDAPFilterConnectionExample").'</td></tr>'; + +// Login unix +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldLoginUnix").'</td><td>'; +if ($conf->global->LDAP_FIELD_LOGIN) +{ + print '<input size="25" type="text" name="fieldlogin" value="'.$conf->global->LDAP_FIELD_LOGIN.'">'; +} +else +{ + print '<input size="25" type="text" name="fieldlogin" value="uid">'; +} +print '</td><td>'.$langs->trans("LDAPFieldLoginExample").'</td></tr>'; + +// Login samba +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldLoginSamba").'</td><td>'; +if ($conf->global->LDAP_FIELD_LOGIN_SAMBA) +{ + print '<input size="25" type="text" name="fieldloginsamba" value="'.$conf->global->LDAP_FIELD_LOGIN_SAMBA.'">'; +} +else +{ + print '<input size="25" type="text" name="fieldloginsamba" value="samaccountname">'; +} +print '</td><td>'.$langs->trans("LDAPFieldLoginSambaExample").'</td></tr>'; + +// Name +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldName").'</td><td>'; +if ($conf->global->LDAP_FIELD_NAME) +{ + print '<input size="25" type="text" name="fieldname" value="'.$conf->global->LDAP_FIELD_NAME.'">'; +} +else +{ + print '<input size="25" type="text" name="fieldname" value="sn">'; +} +print '</td><td>'.$langs->trans("LDAPFieldNameExample").'</td></tr>'; + +// Firstname +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldFirstName").'</td><td>'; +if ($conf->global->LDAP_FIELD_FIRSTNAME) +{ + print '<input size="25" type="text" name="fieldfirstname" value="'.$conf->global->LDAP_FIELD_FIRSTNAME.'">'; +} +else +{ + print '<input size="25" type="text" name="fieldfirstname" value="givenname">'; +} +print '</td><td>'.$langs->trans("LDAPFieldFirstNameExample").'</td></tr>'; + +// Mail +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldMail").'</td><td>'; +if ($conf->global->LDAP_FIELD_MAIL) +{ + print '<input size="25" type="text" name="fieldmail" value="'.$conf->global->LDAP_FIELD_MAIL.'">'; +} +else +{ + print '<input size="25" type="text" name="fieldmail" value="mail">'; +} +print '</td><td>'.$langs->trans("LDAPFieldMailExample").'</td></tr>'; + +// Phone +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldPhone").'</td><td>'; +if ($conf->global->LDAP_FIELD_PHONE) +{ + print '<input size="25" type="text" name="fieldphone" value="'.$conf->global->LDAP_FIELD_PHONE.'">'; +} +else +{ + print '<input size="25" type="text" name="fieldphone" value="telephonenumber">'; +} +print '</td><td>'.$langs->trans("LDAPFieldPhoneExample").'</td></tr>'; + +// Fax +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldFax").'</td><td>'; +if ($conf->global->LDAP_FIELD_FAX) +{ + print '<input size="25" type="text" name="fieldfax" value="'.$conf->global->LDAP_FIELD_FAX.'">'; +} +else +{ + print '<input size="25" type="text" name="fieldfax" value="facsimiletelephonenumber">'; +} +print '</td><td>'.$langs->trans("LDAPFieldFaxExample").'</td></tr>'; + +// Mobile +$var=!$var; +print '<tr '.$bc[$var].'><td>'.$langs->trans("LDAPFieldMobile").'</td><td>'; +if ($conf->global->LDAP_FIELD_MOBILE) +{ + print '<input size="25" type="text" name="fieldmobile" value="'.$conf->global->LDAP_FIELD_MOBILE.'">'; +} +else +{ + print '<input size="25" type="text" name="fieldmobile" value="mobile">'; +} +print '</td><td>'.$langs->trans("LDAPFieldMobileExample").'</td></tr>'; + + + +print '<tr><td colspan="3" align="center"><input type="submit" class="button" value="'.$langs->trans("Modify").'"></td></tr>'; +print '</table>'; + +print '</form>'; + +print '</div>'; + + + +$db->close(); + +llxFooter('$Date$ - $Revision$'); + +?> diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 5ba866152bd79db783849ef44dbf9d688aaa5116..ae6c306617a385bb780bc0d9807136e2256d122e 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -491,11 +491,15 @@ AddSubscriptionIntoAccount=Add subscriptions into bank or cash account, of bank AdherentMailRequired=EMail required to create a new member ##### LDAP setup ##### LDAPSetup=LDAP Setup +LDAPGlobalParameters=Global parameters +LDAPUsersAndGroupsSynchro=Users/groups synchro +LDAPContactsSynchro=Contacts synchro +LDAPSynchronization=LDAP synchronisation LDAPFunctionsNotAvailableOnPHP=LDAP functions are not availbale on your PHP -LDAPSynchronizeUsersAndGroup=Synchronize Dolibarr or LDAP users and groups +LDAPSynchronizeUsersAndGroup=Synchronize Dolibarr users and groups with LDAP LDAPToDolibarr=LDAP -> Dolibarr DolibarrToLDAP=Dolibarr -> LDAP -LDAPSynchronizeContacts=Synchronize Dolibarr contacts to LDAP +LDAPSynchronizeContacts=Synchronize Dolibarr contacts with LDAP LDAPTypeExample=OpenLdap, Egroupware or Active Directory LDAPPrimaryServer=LDAP primary server LDAPSecondaryServer=LDAP secondary server @@ -523,16 +527,20 @@ LDAPDnContactActiveExample=Activated/Unactivated synchronization LDAPContactDn=Dolibarr contacts' DN LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=com) LDAPTestConnect=Test LDAP connection -LDAPTestOK=Connect to LDAP server successful -LDAPTestKO=Connect to LDAP server failed +LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s) +LDAPTCPConnectKO=TCP connect to LDAP server failed (Server=%s, Port=%s) +LDAPUnbindSuccessfull=Disconnect successfull +LDAPUnbindFailed=Disconnect failed +LDAPConnectToDNSuccessfull=Connection au DN (%s) r�ussie +LDAPConnectToDNFailed=Connection au DN (%s) �chou�e LDAPSetupForVersion3=LDAP server configured for version 3 LDAPSetupForVersion2=LDAP server configured for version 2 -LDAPFieldLogin=Login attribute +LDAPFieldLoginUnix=Login (unix) LDAPFieldLoginExample=Default attribute : uid LDAPFilterConnection=Search filter LDAPFilterConnectionExample=Default filter : &(objectClass=user)(objectCategory=person) LDAPAttributes=LDAP attributes -LDAPFieldLoginSamba=Login +LDAPFieldLoginSamba=Login (samba, activedirectory) LDAPFieldLoginSambaExample=Default attribute : samaccountname (Samba and ActiveDirectory) LDAPFieldName=Name LDAPFieldNameExample=Default attribute : sn @@ -546,6 +554,8 @@ LDAPFieldFax=Fax number LDAPFieldFaxExample=Default attribute : facsimiletelephonenumber LDAPFieldMobile=Cellular phone LDAPFieldMobileExample=Default attribute : mobile +LDAPParametersAreStillHardCoded=LDAP parametres are still hardcoded (in contact class) +LDAPSetupNotComplete=LDAP setup not complete (go on others tabs) ##### Products ##### ProductSetup=Products module setup NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 843cfe45d8a438b9d72bdb83b7df9245ab30cb41..48fec98d506b22f070d9f233a7113122a53b4896 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -491,11 +491,15 @@ AddSubscriptionIntoAccount=Enregistrer cotisations dans compte bancaire ou caiss AdherentMailRequired=EMail obligatoire pour cr�er un nouvel adh�rent ##### LDAP setup ##### LDAPSetup=Configuration du module LDAP +LDAPGlobalParameters=Param�tres globals +LDAPUsersAndGroupsSynchro=Synchro utilisateurs/groupes +LDAPContactsSynchro=Synchro contacts +LDAPSynchronization=Synchronisation LDAP LDAPFunctionsNotAvailableOnPHP=Les fonctions LDAP ne sont pas disponibles sur votre PHP -LDAPSynchronizeUsersAndGroup=Synchronisation des utilisateurs et groupes Dolibarr ou LDAP +LDAPSynchronizeUsersAndGroup=Synchronisation des utilisateurs et groupes Dolibarr avec LDAP LDAPToDolibarr=LDAP -> Dolibarr DolibarrToLDAP=Dolibarr -> LDAP -LDAPSynchronizeContacts=Synchronisation des contacts Dolibarr vers LDAP +LDAPSynchronizeContacts=Synchronisation des contacts Dolibarr avec LDAP LDAPTypeExample=OpenLdap, Egroupware ou Active Directory LDAPPrimaryServer=Serveur primaire LDAPSecondaryServer=Serveur secondaire @@ -523,16 +527,20 @@ LDAPDnContactActiveExample=Synchronisation activ LDAPContactDn=DN des contacts Dolibarr LDAPContactDnExample=DN complet (ex: ou=contacts,dc=societe,dc=com) LDAPTestConnect=Tester la connexion LDAP -LDAPTestOK=Connexion au serveur LDAP r�ussie -LDAPTestKO=Connexion au serveur LDAP echou�e +LDAPTCPConnectOK=Connexion TCP au serveur LDAP r�ussie (Server=%s, Port=%s) +LDAPTCPConnectKO=Connexion TCP au serveur LDAP �chou�e (Server=%s, Port=%s) +LDAPUnbindSuccessfull=D�connection r�ussie +LDAPUnbindFailed=D�connection �chou�e +LDAPConnectToDNSuccessfull=Connection au DN (%s) r�ussie +LDAPConnectToDNFailed=Connection au DN (%s) �chou�e LDAPSetupForVersion3=Serveur LDAP configur� en version 3 LDAPSetupForVersion2=Serveur LDAP configur� en version 2 -LDAPFieldLogin=Attribut du Login +LDAPFieldLoginUnix=Login (unix) LDAPFieldLoginExample=Attribut par d�faut : uid LDAPFilterConnection=Filtre de recherche LDAPFilterConnectionExample=Filtre par d�faut : &(objectClass=user)(objectCategory=person) LDAPAttributes=Attributs LDAP -LDAPFieldLoginSamba=Login +LDAPFieldLoginSamba=Login (samba, activedirectory) LDAPFieldLoginSambaExample=Attribut par d�faut : samaccountname (Samba et ActiveDirectory) LDAPFieldName=Nom LDAPFieldNameExample=Attribut par d�faut : sn @@ -546,6 +554,8 @@ LDAPFieldFax=Num LDAPFieldFaxExample=Attribut par d�faut : facsimiletelephonenumber LDAPFieldMobile=T�l�phone portable LDAPFieldMobileExample=Attribut par d�faut : mobile +LDAPParametersAreStillHardCoded=Les parametres LDAP sont cod�s en dur (dans classe contact) +LDAPSetupNotComplete=Configuration LDAP incompl�te (� compl�ter sur les autres onglets) ##### Products ##### ProductSetup=Configuration du module Produits NumberOfProductShowInSelect=Nombre de produits max dans les listes d�roulantes (0=aucune limite)