DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:auth:punbb

Ceci est une ancienne révision du document !


Authentification Punbb

Cette authentification peut se faire uniquement sur le même domaine. Par contre, le wiki et le forum peuvent être dans un sous-domaine différents.

Nécessite :

  • punbb :-)
  • magic_quotes_gpc désactivé (par défaut à partir de PHP5)

Mise en place

Normalement, si votre pun/fluxbb est installé dans un dossier 'forum/' dans ou a coté de dokuwiki (je sait pas trop) l'authentification se fait automatiquement en la sélectionnant depuis l'interface.

Sinon, il faut aller modifier fichier /conf/local.php et /conf/local.protected.php de Dokuwiki, pour lui indiquer le chemin de punbb, son chemin absolu, ainsi:

local.php :

$conf['useacl']  =1;
$conf['authtype']='punbb';
@include(DOKU_CONF.'local.protected.php');

local.protected.php :

define('PUN_ROOT','/path/to/punbb/');

Attention : le “define” directement dans local.php fonctionne aussi dans un premier temps, mais sera écrasé à chaque modification dans le panneau de configuration de Dokuwiki. Cette solution très provisoire n'est donc pas viable.

Pour obtenir le /path/to exact, une bonne astuce et d'activer dans les paramétres de configuration, section “affichage” de dokuwiki:

“Utiliser le chemin complet dans le pied de page” le temps de récupérer le chemin vers votre wiki, vous pourrez en deduire celui de votre forum.

Cas de deux sous-domaines

Imaginons, vous avez un domaine http://biduletruc.bidon et vous créez http://wiki.biduletruc.bidon et http://forum.biduletruc.bidon

Dans ce cas, le patch, par défaut, aura un soucis, car il générera deux cookies, un pour le wiki et un pour le forum, mais celui du forum ,ne sera pas au bon nom de sous-domaine.

Bref, il existe une solution:

Ouvrez le fichier config.php de punbb, et ajoutez y le nom de votre domaine (et non sous-domaine):

  $cookie_name = 'punbb_cookie';
  $cookie_domain = '.biduletruc.bidon';

Apparement, les cookies nécessitent au moins deux points.

Avant de faire l'essai n'oubliez pas de vider les cookies de votre navigateur !

Et voila ! …. :-)

Groupes et administration des deux sites

Attention de bien changer vos noms de groupes punbb et dokuwiki pour les faire concorder. Sinon, vous perdrez l'administration du wiki.

Voir la version anglaise qui explique cela !

Utiliser le formulaire pun/fluxbb

Au final, il reste bien souvent des petits bugs a régler soit même : des erreurs de dates, des membres inscrits en 1970, des soucis avec les espaces, majuscules, caractères spéciaux…

Le plus radical est de configurer dokuwiki pour que l'inscription se fasse depuis punbb:

  • Manuellement, en modifiant manuellement la ligne 69 de /inc/html.php de Dokuwiki (pas toujours efficace et perdu à chaque upgrade)
  if($auth && $auth->canDo('addUser') && actionOK('register')){
  print '<p>';
  print $lang['reghere'];
  print ': <a href="http://adresse.forum/register.php" rel="nofollow" class="wikilink1">'.$lang['register'].'</a>';

Si vous utilisez l'option “manuelle”, il est possible que les nouveaux inscrits tombent sur un forum en anglais et avec le template par défaut de flux/punbb. Donc grosse tricherie. ;-) On prend le dossier de langue francaise “French”, on le renomme en “English” et on renvoie. L'utilisateur est en anglais, mais le forum en francais. Idem pour le style. Copie des deux fichiers de styles recherchés sous le nom du style par défaut. Et hop. Résolu.

désactiver magic_quotes_gpc

Apparemment c'est une fonction de PHP qui ne vous fera pas défaut, ni sur fluxbb ni sur dokuwiki. Donc, pas de pitiée, vous allez à la racine de votre répertoire public (/public-html/, /www/ ou /htdocs/ la plupart du temps) et vous créez un fichiers .htaccess ou éditez celui qui y est déjà. Il faut et il suffit d'ajouter la ligne de code :

  php_value magic_quotes_gpc off

Et le tour est joué.

Adapter les login à l'utf-8

Fluxbb 1.2.x est en ISO8859-1, donc pour avoir des logins avec des caractères latin corrects ouvrez/dokuwiki/inc/auth/punbb.class.php, trouvez (l136 sur la version 2007-06-26b) :

      if(isset($pun_user) && !$pun_user['is_guest']){
    // okay we're logged in - set the globals
    $USERINFO['pass'] = $pun_user['password'];
    $USERINFO['name'] = $pun_user['realname'];
    $USERINFO['mail'] = $pun_user['email'];
    $USERINFO['grps'] = array($pun_user['g_title']);
    $_SERVER['REMOTE_USER'] = $pun_user['username'];
    $_SESSION[DOKU_COOKIE]['auth']['user'] = $pun_user['username'];
    $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
    return true;
  }

Et remplacez le tout par :

  if(isset($pun_user) && !$pun_user['is_guest']){
    // okay we're logged in - set the globals
    $USERINFO['pass'] = $pun_user['password'];
    $USERINFO['name'] = utf8_encode($pun_user['realname']);
    $USERINFO['mail'] = $pun_user['email'];
    $USERINFO['grps'] = array($pun_user['g_title']);
    $_SERVER['REMOTE_USER'] = utf8_encode($pun_user['username']);
    $_SESSION[DOKU_COOKIE]['auth']['user'] = utf8_encode($pun_user['username']);
    $_SESSION[DOKU_COOKIE]['auth']['info'] = $USERINFO;
    return true;
  }

Vous l'aurez compris, la section importante est :

     $_SERVER['REMOTE_USER'] = utf8_encode($pun_user['username']);
     $_SESSION[DOKU_COOKIE]['auth']['user'] = utf8_encode($pun_user['username']);
fr/auth/punbb.1223829746.txt.gz · Dernière modification : 2011-02-21 02:04 (modification externe)

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki