Rorganisation des paramtres du module LDAP pour meilleure comprehension du fonctionnement

This commit is contained in:
Laurent Destailleur
2006-11-18 15:06:26 +00:00
parent 73d37ef718
commit 7bcd563c75
5 changed files with 577 additions and 297 deletions

View File

@@ -47,6 +47,7 @@ $langs->load("admin");
if (!$user->admin) if (!$user->admin)
accessforbidden(); accessforbidden();
/* /*
* Actions * Actions
*/ */
@@ -61,7 +62,6 @@ if ($_GET["action"] == 'setvalue' && $user->admin)
{ {
print $db->error(); print $db->error();
} }
if (! dolibarr_set_const($db, 'LDAP_SERVER_HOST',$_POST["host"])) if (! dolibarr_set_const($db, 'LDAP_SERVER_HOST',$_POST["host"]))
{ {
print $db->error(); print $db->error();
@@ -86,11 +86,7 @@ if ($_GET["action"] == 'setvalue' && $user->admin)
{ {
print $db->error(); print $db->error();
} }
if (! dolibarr_set_const($db, 'LDAP_USER_DN',$_POST["user"])) if (! dolibarr_set_const($db, 'LDAP_SERVER_USE_TLS',$_POST["usetls"]))
{
print $db->error();
}
if (! dolibarr_set_const($db, 'LDAP_GROUP_DN',$_POST["group"]))
{ {
print $db->error(); print $db->error();
} }
@@ -102,55 +98,6 @@ if ($_GET["action"] == 'setvalue' && $user->admin)
{ {
print $db->error(); 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>'; 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%">'; 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 '<tr class="liste_titre">';
print '<td>'.$langs->trans("Parameter").'</td>'; print '<td>'.$langs->trans("Parameter").'</td>';
print '<td>'.$langs->trans("Value").'</td>'; print '<td>'.$langs->trans("Value").'</td>';
print '<td>'.$langs->trans("Example").'</td>'; print '<td>'.$langs->trans("Example").'</td>';
print "</tr>\n"; print "</tr>\n";
$var=true;
$html=new Form($db);
// Type // Type
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("Type").'</td><td>'; 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 '</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>'; 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 '</form>';
print '</div>';
/* /*
@@ -446,84 +292,75 @@ print '</form>';
*/ */
if (function_exists("ldap_connect")) 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 ($_GET["action"] == 'test')
if ($conf->global->LDAP_SERVER_HOST && $conf->global->LDAP_ADMIN_DN && $conf->global->LDAP_ADMIN_PASS && $_GET["action"] == 'test')
{ {
$ldap = New AuthLdap(); $ldap = new AuthLdap(); // Les parametres sont pass<73>s et r<>cup<75>r<EFBFBD>s via $conf
// Test ldap_connect
// ce test n'est pas fiable car une ressource est constamment retourn<72>e
// il faut se fier au test ldap_bind
$ds = $ldap->connect(); $ds = $ldap->connect();
if ($ds) if ($ds)
{ {
print img_picto('','info'); // Test ldap_bind
print $langs->trans("LDAPTestOK").'<br>'; $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>";
}
// Test ldap_getversion
if (($ldap->getVersion() == 3))
{
print img_picto('','info').' ';
print '<font class="ok">'.$langs->trans("LDAPSetupForVersion3").'</font><br>';
}
else
{
print img_picto('','info').' ';
print $langs->trans("LDAPSetupForVersion2").'<br>';
}
// Test ldap_unbind
$unbind = $ldap->unbind();
if ($unbind)
{
print img_picto('','info').' ';
print '<font class="ok">'.$langs->trans("LDAPUnbindSuccessfull").'</font><br>';
}
else
{
print img_picto('','error').' ';
print $langs->trans("LDAPUnbindFailed");
print "<br>";
print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText;
}
} }
else else
{ {
print img_picto('','alerte'); print img_picto('','error').' ';
print $langs->trans("LDAPTestKO").'<br>'; print $langs->trans("LDAPTCPConnectKO",$conf->global->LDAP_SERVER_HOST,$conf->global->LDAP_SERVER_PORT).'<br>';
print "<br>"; print "<br>";
print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText; print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText;
print "<br>"; print "<br>";
} }
if ($ds)
{
// Test ldap_getversion
if (($ldap->getVersion() == 3))
{
print img_picto('','info');
print $langs->trans("LDAPSetupForVersion3").'<br>';
}
else
{
print img_picto('','info');
print $langs->trans("LDAPSetupForVersion2").'<br>';
}
// Test ldap_bind
$bind = $ldap->bind();
if ($bind)
{
print img_picto('','info');
print "Connexion au dn $dn r<>ussi<br>";
}
else
{
print img_picto('','alerte');
print "Connexion au dn $dn rat<61> : ";
print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText;
print "<br>";
}
// Test ldap_unbind
$unbind = $ldap->unbind();
if ($unbind)
{
print img_picto('','info');
print "D<EFBFBD>connection du dn $dn r<>ussi<br>";
}
else
{
print img_picto('','alerte');
print "D<EFBFBD>connection du dn $dn rat<61>";
print "<br>";
print $ldap->ldapErrorCode." - ".$ldap->ldapErrorText;
}
}
} }
} }
$db->close(); $db->close();
llxFooter('$Date$ - $Revision$'); llxFooter('$Date$ - $Revision$');
?> ?>

View File

@@ -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$');
?>

283
htdocs/admin/ldap_users.php Normal file
View File

@@ -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$');
?>

View File

@@ -491,11 +491,15 @@ AddSubscriptionIntoAccount=Add subscriptions into bank or cash account, of bank
AdherentMailRequired=EMail required to create a new member AdherentMailRequired=EMail required to create a new member
##### LDAP setup ##### ##### LDAP setup #####
LDAPSetup=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 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 LDAPToDolibarr=LDAP -> Dolibarr
DolibarrToLDAP=Dolibarr -> LDAP DolibarrToLDAP=Dolibarr -> LDAP
LDAPSynchronizeContacts=Synchronize Dolibarr contacts to LDAP LDAPSynchronizeContacts=Synchronize Dolibarr contacts with LDAP
LDAPTypeExample=OpenLdap, Egroupware or Active Directory LDAPTypeExample=OpenLdap, Egroupware or Active Directory
LDAPPrimaryServer=LDAP primary server LDAPPrimaryServer=LDAP primary server
LDAPSecondaryServer=LDAP secondary server LDAPSecondaryServer=LDAP secondary server
@@ -523,16 +527,20 @@ LDAPDnContactActiveExample=Activated/Unactivated synchronization
LDAPContactDn=Dolibarr contacts' DN LDAPContactDn=Dolibarr contacts' DN
LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=com) LDAPContactDnExample=Complete DN (ex: ou=contacts,dc=society,dc=com)
LDAPTestConnect=Test LDAP connection LDAPTestConnect=Test LDAP connection
LDAPTestOK=Connect to LDAP server successful LDAPTCPConnectOK=TCP connect to LDAP server successful (Server=%s, Port=%s)
LDAPTestKO=Connect to LDAP server failed 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) <20>chou<6F>e
LDAPSetupForVersion3=LDAP server configured for version 3 LDAPSetupForVersion3=LDAP server configured for version 3
LDAPSetupForVersion2=LDAP server configured for version 2 LDAPSetupForVersion2=LDAP server configured for version 2
LDAPFieldLogin=Login attribute LDAPFieldLoginUnix=Login (unix)
LDAPFieldLoginExample=Default attribute : uid LDAPFieldLoginExample=Default attribute : uid
LDAPFilterConnection=Search filter LDAPFilterConnection=Search filter
LDAPFilterConnectionExample=Default filter : &(objectClass=user)(objectCategory=person) LDAPFilterConnectionExample=Default filter : &(objectClass=user)(objectCategory=person)
LDAPAttributes=LDAP attributes LDAPAttributes=LDAP attributes
LDAPFieldLoginSamba=Login LDAPFieldLoginSamba=Login (samba, activedirectory)
LDAPFieldLoginSambaExample=Default attribute : samaccountname (Samba and ActiveDirectory) LDAPFieldLoginSambaExample=Default attribute : samaccountname (Samba and ActiveDirectory)
LDAPFieldName=Name LDAPFieldName=Name
LDAPFieldNameExample=Default attribute : sn LDAPFieldNameExample=Default attribute : sn
@@ -546,6 +554,8 @@ LDAPFieldFax=Fax number
LDAPFieldFaxExample=Default attribute : facsimiletelephonenumber LDAPFieldFaxExample=Default attribute : facsimiletelephonenumber
LDAPFieldMobile=Cellular phone LDAPFieldMobile=Cellular phone
LDAPFieldMobileExample=Default attribute : mobile LDAPFieldMobileExample=Default attribute : mobile
LDAPParametersAreStillHardCoded=LDAP parametres are still hardcoded (in contact class)
LDAPSetupNotComplete=LDAP setup not complete (go on others tabs)
##### Products ##### ##### Products #####
ProductSetup=Products module setup ProductSetup=Products module setup
NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit) NumberOfProductShowInSelect=Max number of products in combos select lists (0=no limit)

View File

@@ -491,11 +491,15 @@ AddSubscriptionIntoAccount=Enregistrer cotisations dans compte bancaire ou caiss
AdherentMailRequired=EMail obligatoire pour cr<63>er un nouvel adh<64>rent AdherentMailRequired=EMail obligatoire pour cr<63>er un nouvel adh<64>rent
##### LDAP setup ##### ##### LDAP setup #####
LDAPSetup=Configuration du module LDAP LDAPSetup=Configuration du module LDAP
LDAPGlobalParameters=Param<61>tres globals
LDAPUsersAndGroupsSynchro=Synchro utilisateurs/groupes
LDAPContactsSynchro=Synchro contacts
LDAPSynchronization=Synchronisation LDAP
LDAPFunctionsNotAvailableOnPHP=Les fonctions LDAP ne sont pas disponibles sur votre PHP 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 LDAPToDolibarr=LDAP -> Dolibarr
DolibarrToLDAP=Dolibarr -> LDAP DolibarrToLDAP=Dolibarr -> LDAP
LDAPSynchronizeContacts=Synchronisation des contacts Dolibarr vers LDAP LDAPSynchronizeContacts=Synchronisation des contacts Dolibarr avec LDAP
LDAPTypeExample=OpenLdap, Egroupware ou Active Directory LDAPTypeExample=OpenLdap, Egroupware ou Active Directory
LDAPPrimaryServer=Serveur primaire LDAPPrimaryServer=Serveur primaire
LDAPSecondaryServer=Serveur secondaire LDAPSecondaryServer=Serveur secondaire
@@ -523,16 +527,20 @@ LDAPDnContactActiveExample=Synchronisation activ
LDAPContactDn=DN des contacts Dolibarr LDAPContactDn=DN des contacts Dolibarr
LDAPContactDnExample=DN complet (ex: ou=contacts,dc=societe,dc=com) LDAPContactDnExample=DN complet (ex: ou=contacts,dc=societe,dc=com)
LDAPTestConnect=Tester la connexion LDAP LDAPTestConnect=Tester la connexion LDAP
LDAPTestOK=Connexion au serveur LDAP r<>ussie LDAPTCPConnectOK=Connexion TCP au serveur LDAP r<>ussie (Server=%s, Port=%s)
LDAPTestKO=Connexion au serveur LDAP echou<EFBFBD>e LDAPTCPConnectKO=Connexion TCP au serveur LDAP <EFBFBD>chou<EFBFBD>e (Server=%s, Port=%s)
LDAPUnbindSuccessfull=D<>connection r<>ussie
LDAPUnbindFailed=D<>connection <20>chou<6F>e
LDAPConnectToDNSuccessfull=Connection au DN (%s) r<>ussie
LDAPConnectToDNFailed=Connection au DN (%s) <20>chou<6F>e
LDAPSetupForVersion3=Serveur LDAP configur<75> en version 3 LDAPSetupForVersion3=Serveur LDAP configur<75> en version 3
LDAPSetupForVersion2=Serveur LDAP configur<75> en version 2 LDAPSetupForVersion2=Serveur LDAP configur<75> en version 2
LDAPFieldLogin=Attribut du Login LDAPFieldLoginUnix=Login (unix)
LDAPFieldLoginExample=Attribut par d<>faut : uid LDAPFieldLoginExample=Attribut par d<>faut : uid
LDAPFilterConnection=Filtre de recherche LDAPFilterConnection=Filtre de recherche
LDAPFilterConnectionExample=Filtre par d<>faut : &(objectClass=user)(objectCategory=person) LDAPFilterConnectionExample=Filtre par d<>faut : &(objectClass=user)(objectCategory=person)
LDAPAttributes=Attributs LDAP LDAPAttributes=Attributs LDAP
LDAPFieldLoginSamba=Login LDAPFieldLoginSamba=Login (samba, activedirectory)
LDAPFieldLoginSambaExample=Attribut par d<>faut : samaccountname (Samba et ActiveDirectory) LDAPFieldLoginSambaExample=Attribut par d<>faut : samaccountname (Samba et ActiveDirectory)
LDAPFieldName=Nom LDAPFieldName=Nom
LDAPFieldNameExample=Attribut par d<>faut : sn LDAPFieldNameExample=Attribut par d<>faut : sn
@@ -546,6 +554,8 @@ LDAPFieldFax=Num
LDAPFieldFaxExample=Attribut par d<>faut : facsimiletelephonenumber LDAPFieldFaxExample=Attribut par d<>faut : facsimiletelephonenumber
LDAPFieldMobile=T<>l<EFBFBD>phone portable LDAPFieldMobile=T<>l<EFBFBD>phone portable
LDAPFieldMobileExample=Attribut par d<>faut : mobile LDAPFieldMobileExample=Attribut par d<>faut : mobile
LDAPParametersAreStillHardCoded=Les parametres LDAP sont cod<6F>s en dur (dans classe contact)
LDAPSetupNotComplete=Configuration LDAP incompl<70>te (<28> compl<70>ter sur les autres onglets)
##### Products ##### ##### Products #####
ProductSetup=Configuration du module Produits ProductSetup=Configuration du module Produits
NumberOfProductShowInSelect=Nombre de produits max dans les listes d<>roulantes (0=aucune limite) NumberOfProductShowInSelect=Nombre de produits max dans les listes d<>roulantes (0=aucune limite)