Comment vérifier qu'un utilisateur est authentifié en Drupal 7.x ?

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Besoin de documentation : comment vérifier qu'un utilisateur est authentifié en Drupal ?

J'aimerais intégrer AjaxChat à mon Drupal de façon basique c'est-à-dire en me contentant de remplacer le login Ajaxchat par une vérification du fait que l'utilisateur est bien authentifié sur mon site Drupal.

Bien entendu je n'attends pas de vous que vous le fassiez à ma place mais juste un indice, une référence, un tuto de base sur le développement Drupal par exemple...

Bref une séquence de code à utiliser.

Quelqu'un a un URL expliquant tout ça ?

Merci d'avance...

Forum : 
Version de Drupal : 

Sans bien connaître ce projet (ajaxchat), ce n'est pas forcement évident de répondre avec justesse. Mais basiquement le principe serait, dans sa version longue, de démarrer drupal (bootstrap) sur chaque requête à ajaxchat de sorte à vérifier si l'utilisateur est connecté sur drupal.

Ce qui donne ce bout de code :

<?php
// On définit où trouve drupal
define('DRUPAL_ROOT', getcwd());

// On inclus le bootstrap de drupal
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';

// On démarre drupal
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

// On vérifie si l'utilisateur qui appelle est connecté
$is_connected = $GLOBALS['user']->uid!=0;
?>

Si le script PHP qui utilise cela n'est pas à la racine de drupal, il va falloir tricher un peu comme ceci :

<?php
define
('DRUPAL_ROOT', 'chemin/vers/racine/drupal');

// On sauvegarde le chemin de travail
$ancien_wd=getcwd();

// On modifie artificiellement le chemin de travail
// pour pointer sur la racine de drupal
chdir(DRUPAL_ROOT);

// On inclus le bootstrap de drupal
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';

// On démarre drupal
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

// On vérifie si l'utilisateur qui appelle est connecté
$is_connected = $GLOBALS['user']->uid!=0;

// On restaure le dossier de travail
chdir($ancien_wd)
?>

Après faire un DRUPAL_BOOSTRAP_FULL peut être un peu long. Si c'est juste pour vérifier l'authentification on peut en faire un peu moins, par exemple DRUPAL_BOOTSTRAP_SESSION.

Enfin l'objet $GLOBALS['user'] qui est testé ici peut te donner aussi le nom de l'utilisateur (champ ->name), et d'un manière générale tous les champs de la table {user}.

Après ce n'est pas idéal comme approche mais c'est tout-terrain. L'idéal serait de faire un module complet qui envelopperait AjacChat. Mais c'est un peu plus compliqué et pour le coup cela demande de maîtriser Drupal ET Ajaxchat.

Merci beaucoup pour ces informations que je m'empresse d'imprimer dans un pdf.
Il y a un Wiki à propos d'AjaxChat qui parle de l'implantation pour phpBB3 et d'autres forums. Avec l'information que tu m'as donnée je devrais pouvoir m'en sortir... Si pas je prendrai une licence CometChat probablement mdr.
Comme tu sembles sacrément maîtriser le sujet, quels sont les liens / documents que tu sugèrerais pour démarrer dans la programmation en Drupal ?

Très bonne idée d'avoir pensé à me dire comment récupérer le user; j'en ai bien entendu besoin pour logger le user

Alors là pour ce qui est des liens, je ne saurais trop dire, désolé. La période "apprentissage" est un peu trop ancienne :) Il me semble qu'il y a quelques bon bouquins sur le sujet, j'en avais même vu passer un en français. Maintenant la meilleur source d'information reste tout de même le moteur de recherche, et le code source de drupal et des modules contrib.

Finalement je n'ai plus vraiment besoin d'intégrer Ajax Chat car j'ai opté pour une solution intégrée Cometchat qui fonctionne super bien, quoi que j'aie du tâtonner quelque peu avec le support pour qu'ils finissent par me dire comment faire (au lieu de s'obstiner à le faire à ma place dans l'environnement de test que je leur avais défini)