Skip to content
Snippets Groups Projects
Commit 9bd79dd2 authored by Regis Houssin's avatar Regis Houssin
Browse files

Ajout gestion des users via Active Directory (ouindoze)

Fix: synchro suppression des contacts sur ldap
parent 241addc0
No related branches found
No related tags found
No related merge requests found
......@@ -237,7 +237,16 @@ print '<tr><td>'.$langs->trans("DNGroup").'</td><td>';
print '<input size="25" type="text" name="group" value="'.LDAP_GROUP_DN.'">';
print '</td></tr>';
print '<tr><td>'.$langs->trans("DNContactActive").'</td><td><select name="activecontact">';
print '<option value="0" selected>'.$langs->trans("No");
if (defined("LDAP_CONTACT_ACTIVE") && LDAP_CONTACT_ACTIVE == 1)
{
print '<option value="1" selected>'.$langs->trans("Yes");
}
else
{
print '<option value="0" selected>'.$langs->trans("No");
}
print '<option value="LDAP_CONTACT_ACTIVE">--------';
print '<option value="0">'.$langs->trans("No");
print '<option value="1">'.$langs->trans("Yes");
print '</select>';
print '</td></tr>';
......@@ -246,8 +255,25 @@ print '<input size="25" type="text" name="contact" value="'.LDAP_CONTACT_DN.'">'
print '</td></tr>';
print '<tr><td>'.$langs->trans("Type").'</td><td><select name="type">';
print '<option value="openldap" selected>OpenLdap';
if (defined("LDAP_SERVER_TYPE") && LDAP_SERVER_TYPE == activedirectory)
{
print '<option value="activedirectoty" selected>Active Directory';
}
else
{
if (defined("LDAP_SERVER_TYPE") && LDAP_SERVER_TYPE == egroupware)
{
print '<option value="egroupware" selected>Egroupware';
}
else
{
print '<option value="openldap" selected>OpenLdap';
}
}
print '<option value="LDAP_SERVER_TYPE">------------------------';
print '<option value="openldap">OpenLdap';
print '<option value="egroupware">Egroupware';
print '<option value="activedirectory">Active Directory';
print '</select>';
print '</td></tr>';
......@@ -266,7 +292,7 @@ if (defined("LDAP_SERVER_HOST") && LDAP_SERVER_HOST) {
}
if (defined("LDAP_SERVER_HOST") && LDAP_SERVER_HOST && $_GET["action"] == 'test')
if (defined("LDAP_SERVER_HOST") && LDAP_SERVER_HOST && LDAP_ADMIN_DN && LDAP_ADMIN_PASS && $_GET["action"] == 'test')
{
$ds = dolibarr_ldap_connect();
......
......@@ -178,8 +178,7 @@ class Contact
$info["objectclass"][1] = "person";
$info["objectclass"][2] = "organizationalPerson";
$info["objectclass"][3] = "inetOrgPerson";
$info["ou"] = 'People';
$info["cn"] = utf8_encode($this->firstname." ".$this->name);
$info["sn"] = utf8_encode($this->name);
$info["givenName"] = utf8_encode($this->firstname);
......@@ -259,13 +258,8 @@ class Contact
$info["mail"] = $this->email;
}
$dnshort = explode(",", LDAP_ADMIN_DN.','.LDAP_SUFFIX_DN,2);
// TODO comprendre pourquoi cela ne marche plus
//$dn = "cn=".$info["cn"].","."ou=".$info["ou"].",".$dnshort[1];
$dn = "cn=".$info["cn"].",".LDAP_CONTACT_DN.",".LDAP_SUFFIX_DN;
$dn = "cn=".$info["cn"].",".$dnshort[1];
$r = @ldap_delete($ds, $dn);
if (! @ldap_add($ds, $dn, $info))
......@@ -275,7 +269,7 @@ class Contact
}
else
{
echo "Connection au dn $dn chou !";
echo "Connexion au dn $dn chou !";
}
dolibarr_ldap_unbind($ds);
......@@ -487,6 +481,20 @@ class Contact
*/
function delete($id)
{
$sql = "SELECT c.name, c.firstname FROM ".MAIN_DB_PREFIX."socpeople as c";
$sql .= " WHERE c.idp = ". $id;
$resql=$this->db->query($sql);
if ($resql)
{
if ($this->db->num_rows($resql))
{
$obj = $this->db->fetch_object($resql);
$this->old_name = $obj->name;
$this->old_firstname = $obj->firstname;
}
}
$sql = "DELETE FROM ".MAIN_DB_PREFIX."socpeople";
$sql .= " WHERE idp=$id";
......@@ -500,32 +508,23 @@ class Contact
if (defined('MAIN_MODULE_LDAP') && MAIN_MODULE_LDAP)
{
if (defined('LDAP_CONTACT_ACTIVE') && LDAP_CONTACT_ACTIVE == 1)
{
$this->update_ldap($user);
}
return $result;
}
function delete_ldap($user)
{
$this->fetch($this->id);
$ds = dolibarr_ldap_connect();
if ($ds)
{
//ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
//ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $version);
dolibarr_ldap_setversion($ds, $version);
$ldapbind = dolibarr_ldap_bind($ds);
if ($ldapbind)
{
// delete from ldap directory
$dn = utf8_encode("cn=".$this->old_firstname." ".$this->old_name.", ".LDAP_SUFFIX_DN);
$userdn = utf8_encode($this->old_firstname." ".$this->old_name);
$dn = "cn=".$userdn.",".LDAP_CONTACT_DN.",".LDAP_SUFFIX_DN;
$r = @ldap_delete($ds, $dn);
}
else
{
......@@ -542,6 +541,8 @@ class Contact
return $result;
}
}
}
/*
* \brief Charge les informations sur le contact, depuis la base
......
<?php
/* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005 Regis Houssin <regis.houssin@cap-networks.com>
*
* 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
......@@ -51,7 +52,7 @@ class modLdap extends DolibarrModules
$this->name = "Ldap";
$this->family = "technic";
$this->description = "Synchronisation Ldap";
$this->version = 'dolibarr'; // 'experimental' or 'dolibarr' or version
$this->version = 'experimental'; // 'experimental' or 'dolibarr' or version
$this->const_name = "MAIN_MODULE_LDAP";
$this->const_config = MAIN_MODULE_LDAP;
$this->special = 1;
......
......@@ -282,7 +282,7 @@ DNContactActiveYes=Activated synchronization
DNContactActiveExample=Desactivated synchronization
DNContact=Contacts' DN
DNContactExample=ex: ou=contacts
TypeExample=OpenLdap or Egroupware
TypeExample=OpenLdap, Egroupware or Active Directory
##### Propal #####
PropalSetup=Commercial proposals module setup
##### Sendings #####
......
......@@ -282,7 +282,7 @@ DNContactActiveYes=Synchronisation activ
DNContact=DN des contacts
DNContactActiveExample=Synchronisation désactivée
DNContactExample=ex: ou=contacts
TypeExample=OpenLdap ou Egroupware
TypeExample=OpenLdap, Egroupware ou Active Directory
##### Propal #####
PropalSetup=Configuration du module Propositions Commerciales
##### Sendings #####
......
......@@ -54,12 +54,19 @@ function dolibarr_ldap_connect()
function dolibarr_ldap_bind($ds)
{
if (defined("LDAP_ADMIN_PASS") && LDAP_SUFFIX_DN && LDAP_ADMIN_DN && LDAP_ADMIN_PASS)
if (defined("LDAP_ADMIN_PASS") && LDAP_SUFFIX_DN && LDAP_ADMIN_DN && LDAP_ADMIN_PASS)
{
$ldapbind = ldap_bind($ds, LDAP_ADMIN_DN.",".LDAP_SUFFIX_DN, LDAP_ADMIN_PASS);
if (defined("LDAP_SERVER_TYPE") && LDAP_USER_DN && LDAP_SERVER_TYPE == activedirectory)
{
$ldapbind = ldap_bind($ds, LDAP_ADMIN_DN.",".LDAP_USER_DN.",".LDAP_SUFFIX_DN, LDAP_ADMIN_PASS);
}
else
{
$ldapbind = ldap_bind($ds, LDAP_ADMIN_DN.",".LDAP_SUFFIX_DN, LDAP_ADMIN_PASS);
}
return $ldapbind;
}
return $ldapbind;
}
/*!
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment