(en cours de rédaction)
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.
Plusieurs remarques avant de débuter :
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.
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 !