LDAP et Statut adhérent

Bonjour,

Je souhaiterais que les adhérents qui ne sont pas à jour de leur cotisation (dans Dolibarr) ne puissent pas accéder à des comptes de services WEB tel Nextcloud.
Aujourd’hui, Dolibarr peuple mon LDAP à l’aide du module LDAP.

En revanche, je ne sais pas comment renseigner la dernière partie concernant le statut de l’adhérent ni sa date de fin de validité adhésion par exemple de façon à ensuite pouvoir utiliser cette information depuis un service WEb tel que Nextcloud qui lierait depuis mon LDAP les utilisateurs qui peuvent se connecter.

Est-ce que quelqu’un saurait comment faire pour que Dolibarr renseigne bien automatiquement LDAP sur cette question d’adhérent à jour = compte actif / adhérent pas à jour = compte inactif?
Et encore mieux, est-ce que quelqu’un saurait ensuite comment utiliser cette information contenu dans le LDAP, mis à jour par Dolibarr, depuis Nextcloud pour que les comptes soient désactivé lorsqu’un adhérent n’est plus à jour?

Une fois que je saurais faire avec Dolibarr -> LDAP -> Nextcloud, j’imagine que ce sera plus facile de faire la même pour d’autre service WEB.

Merci par avance pour votre aide.

Dolibarr peut créer deux groupes d’adhérent dans LDAP à partir de statuts adhérent dans Dolibarr? un groupe adhérent à jour et un groupe adhérent pas à jour? et mettre à jour ces deux groupes quotidiennement?

Si adhérent A a le statut « à jour » il appartient au groupe « à jour ».
Si adhérent B obtient le statut « non à jour » il quitte le groupe « à jour » et Dolibarr indique à LDAP qu’il appartient désormais au groupe « non à jour » etc…

Bonjour,

j’ai fini par créer cette fonction dans dolibarr/htdocs/adherents/class/adherent.class.php :

 public function updateTypeAdherents()
 {
         $nbrowsaffected=0;
         $this->db->begin();
         $sql = "UPDATE ".MAIN_DB_PREFIX."adherent SET fk_adherent_type = '9' WHERE datefin IS NULL OR datefin < DATE_ADD(CURRENT_DATE, INTERVAL -1 MONTH) AND fk_adherent_type != '5'";
         dol_syslog(get_class($this)."::update update member", LOG_DEBUG);
         $resql=$this->db->query($sql);
         if ($resql)
         {
           $nbrowsaffected+=$this->db->affected_rows($resql);
           $this->db->commit();
           return $nbrowsaffected;
         }

J’appelle ensuite cette fonction dans « Travail planifié » tous les jours. Ainsi, la base de donnée de se mets à jour comme je le souhaite.

Il me reste à m’assurer que LDAP est mis à jour aussi tous les jours.
Pourriez-vous me confirmer que c’est bien le cas? Et sinon m’indiquer comment faire une mise à jour automatique de dolibarr vers LDAP tous les jours?

Pour information, voila ce que j’ai entré dans le « travail planifié »

Libellé maj bdd Type adhérents vers non-adhérents
Type de travail planifié Appelle d’une méthode d’une classe Dolibarr
Module adherents
Nom de fichier intégrant la classe adherents/class/adherent.class.php
Instance/objet à créer Adherent
Méthode updateTypeAdherents
Paramètres

Pour pouvoir forcer la synchronisation de dolibarr vers LDAP, j’ai essayé d’ajouter le code suivant, sans succès…

//INIT CURL
$ch = curl_init();

//SET THE URL
curl_setopt($ch, CURLOPT_URL, 'https://dolibarr.defis.info/adherents/type_ldap.php');
// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);
// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
curl_setopt($ch, CURLOPT_POSTFIELDS, 'rowid=9&action=dolibarr2ldap');

//EXECUTE POST
$result = curl_exec($ch);

//CLOSE CURL
curl_close($ch);

Si ça fonctionnait, j’aurais fait une boucle while sur toutes les catégories de type d’adhérent sur en changeant
‹ rowid=8&action=dolibarr2ldap ›
par
‹ rowid=$typeadherent&action=dolibarr2ldap ›
par exemple mais ça ne fonctionne pas…

Je ne sais plus quoi faire

J’ai fini par trouvé une solution que j’ai posté ici :Mise à jour automatique de LDAP?

1 « J'aime »