Not logged in. · Lost password · Register
Forum: Non-English Discussion French discussion RSS
Récupérer la session DokuWiki en cours
Avatar
dmr #1
Member for 3 months · 6 posts · Location: Belgique
Group memberships: Members
Show profile · Link to this post
Subject: Récupérer la session DokuWiki en cours
Bonjour,

J'ai créé pour une association un site web en php dans lequel certaines parties ne sont accessibles qu'après connexion.
Mais pages contiennent donc session_start() et vérifie qu'une session est bien présente et que l'utilisateur a bien les droits requis pour poursuivre sur les pages réservées.

Comme l'un des buts de cette association est le partage de bonnes pratiques professionnelles, je viens d'installer dokuwiki en parallèle au site initial.

Pour éviter aux membres inscrits de devoir se connecter à la fois sur le site web et à la fois sur dokuwiki, j'aimerais modifier mes pages php afin que celles-ci puissent utiliser la session ouverte dans le dokuwiki.

J'ai cherché et ai vu des morceaux de code de style où il est question de:
      $USERINFO
      $_SERVER['REMOTE_USER']
      $_SESSION[DOKU_COOKIE]['auth']['user']

Mais ça n'a pas l'air de fonctionner.  Pour le dernier, je ne vois trop ce que la "constante" DOKU_COOKIE vaut.
Et en plus, l'anglais n'étant pas mon fort, je n'ai donc pas trouvé le code qu'il me faudrait mettre après le session_start().


Pourriez-vous m'aider ?

Merci,
Avatar
schplurtz (Moderator) #2
Member since Nov 2009 · 383 posts · Location: France, Finistère
Group memberships: Global Moderators, Members
Show profile · Link to this post
Bonjour,

USERINFO : tableau rempli par DokuWiki. inutilisable en dehors de DokuWiki

_SERVER['REMOTE_USER'] : avec une authentification réalisée par le serveur web (pas par DokuWiki), contient le nom de l'utilisateur. Mais, pour simplifier le code et toujours utiliser la même chose, DokuWiki fixe lui même cette valeur lorsque l'utilisateur est authentifié (par DokuWiki cette fois). Moralité : En dehors de DokuWiki, cette valeur ne sera pas disponible. (sauf si authentification via le serveur web)

Quant à la constante DOKU_COOKIE, elle peut varier d'un site à un autre. Elle est définie dans init.php par cette instruction
  1. define('DOKU_COOKIE', 'DW'.md5(DOKU_REL.(($conf['securecookie'])?$_SERVER['SERVER_PORT']:'')));
et DOKU_REL est définie dans le même fichier comme le résultat de getBaseURL(false). AMHA, tu as meilleur compte à utiliser les fonctions de débugage de ton navigateur pour en connaitre la valeur.
Le contenu de ce cookie est défini dans la fonction auth_login du fichier inc/auth.php et est le nom d'utilisateur, un booléen converti en entier et un dérivé du mot de passe.

Je ne sais pas si ces réponses t'aident. Bon courage.

Sais-tu qu'il est possible de faire l'inverse ? DokuWiki peut utiliser une authentification déjà réalisée par un autre système pour reconnaitre les utilisateurs. C'est la méthode trustexternal que tu peux mettre en œuvre dans un greffon d'authentification.
Ainsi, il est possible que DokuWiki récupère les cookie de ton système actuel d'authentification. Pour cela, crée un greffon
d'authentification avec le magicien https://pluginwiz.dokuwiki.org/ ; ensuite en t'inspirant de ce post de qiia https://forum.dokuwiki.org/thread/11717 , tu n'as qu'a écrire une fonction qui récupère les informations dont tu as besoin à partir du cookie de ton système actuel d'authentification. La documentation des systèmes d'authentification est même traduite en français : https://www.dokuwiki.org/fr:devel:auth_plugins

Bonnes fêtes de fin d'année.
Avatar
dmr #3
Member for 3 months · 6 posts · Location: Belgique
Group memberships: Members
Show profile · Link to this post
Merci schplurtz,

Je regarde à ça.

Bonne année à toi,
Close Smaller – Larger + Reply to this post:
Verification code: VeriCode Please enter the word from the image into the text field below. (Type the letters only, lower case is okay.)
Smileys: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Special characters:
Go to forum
Imprint
This board is powered by the Unclassified NewsBoard software, 20150713-dev, © 2003-2015 by Yves Goergen
Current time: 2019-03-20, 02:26:33 (UTC +01:00)