(en cours de rédaction)

Intégration à Dokuwiki

Introduction

Dokuwiki est un wiki fonctionnant sans base de données. Il permet cependant d'identifier des utilisateurs qui eux sont enregistrés dans une base de données. C'est ce que nous intéresse ici, et c'est ce qui rend l'intégration à SMF très simple.

Mise en oeuvre

Remarques préalables

Plusieurs remarques avant de débuter :

  • À l'heure où j'écris ces lignes, il vous faut la version de développement de Dokuwiki pour réaliser ce qui suit.
  • Un bug empêchait le bon fonctionnement de l'intégration à SMF (et plus généralement, l'utilisation de l'identification via Mysql dans certains cas). Le version de développement que vous avez téléchargée est sans doute corrigée. Si vous voulez en être certain : ouvrez le fichier mysql.class.php situé dans le répertoire /inc/auth/ de Dokuwiki et recherchez la ligne suivante :
    $rc = $this->cnf['encryptPass'] ? true : auth_verifyPassword($pass,$result[0]['pass']);

    Si elle existe, c'est parfait, ne touchez à rien ! Sinon rechechez la ligne suivante :

    $rc = $cnf['encryptPass'] ? true : auth_verifyPassword($pass,$result[0]['pass']);

    et remplacez-la par le code donné ci-dessus.

  • Cette intégration est faite pour la branche 1.1 de SMF, qui utilise un système de mot de passe différent de la branche 1.0 (utilisation de la fonction sha1() en lieu et place de la fonction md5()).

Modification des fichiers

Je pars du principe que vous connaissez un minimum le système d'ACL de Dokuwiki. Sinon, lisez cette page ;-)

Ouvrez ou créez le fichier /conf/local.php et ajoutez-y les lignes suivantes :

// Activation de la gestion des utilisateurs et des permissions
$conf['useacl'] = 1;
// Interdiction de s'inscrire au wiki (logique, puisqu'on souhaite utiliser les utilisateurs SMF)
$conf['openregister'] = 0;
// Le système d'identification repose sur mysql
$conf['authtype'] = 'mysql';
 
// Personnalisez les lignes suivantes selon la configuration de votre serveur mysql
$conf['auth']['mysql']['server'] = 'localhost'; // Adresse du serveur mysql
$conf['auth']['mysql']['user'] = 'utilisateur'; // Utilisateur de la base de données
$conf['auth']['mysql']['password'] = 'motdepasse'; // Mot de passe de l'utilisateur
$conf['auth']['mysql']['database'] = 'basededonnées'; // Nom de la base de données contenant les tables SMF
// Fin des lignes à personnaliser
 
$conf['auth']['mysql']['encryptPass'] = 1;
$conf['auth']['mysql']['getUserID']	= "SELECT ID_MEMBER AS id FROM smf_members WHERE memberName='%u'";
$conf['auth']['mysql']['checkPass']	= "SELECT passwd AS pass FROM smf_members WHERE passwd=sha1(concat(lower('%u'), '%p'))";
$conf['auth']['mysql']['getGroups']	= "SELECT smf_membergroups.groupName as 'group' FROM smf_membergroups, smf_members WHERE smf_members.ID_GROUP = smf_membergroups.ID_GROUP AND smf_members.memberName='%u'";
$conf['auth']['mysql']['getUserInfo']	= "SELECT passwd AS pass, memberName AS name, emailAddress AS mail FROM smf_members WHERE memberName='%u'";

C'est tout !

integration/dokuwiki.txt · Dernière modification: 2024/01/07 02:31 (modification externe)
Haut de page
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0