[Résolu] Connexion automatique d'un utilisateur à Drupal via un site externe

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.

Bonjour à toutes et à tous,

je me suis enfin décidé à coder "proprement" et à orienter mon code à la philosophie Drupal (avec des hook, etc..^^)

J'ai trouvé de très bon tutos sur ce site qui explique tout ce qu'il y a à savoir sur les "hook" (notamment le tutos de Yoran, excellent)

Cependant, après avoir fait le tour du forum je n'arrive pas à mettre la main sur quelqu'un qui a mon "problème".

En effet, pour des besoins sur l'intranet de ma boite je désire faire en sorte que les utilisateurs qui sont connectés dessus peuvent accéder à une rubrique externe, sous Drupal, sans avoir à repasser par un formulaire de connexion.

Pour pouvoir aller sur le site Drupal, je compte faire sur l'intranet un lien qui validera un formulaire, ce dernier enverra en POST le login et pass de l'utilisateur a Drupal qui se chargera de le connecter implicitement.

J'ai commencer à regarder du côté des hook_user, hook_form , mais à vrai dire je ne vois pas par où commencer juste pour récupérer le login et pass transmis à Drupal.

Merci d'avance pour vos aides et désolé pour mes explications pas très claires :')

Forum : 
Version de Drupal : 

Bonjour,
Ca se passe du coté de la table "authmap", avec les fonctions user_external_login_register, user_external_login, etc.
Tu peux jeter un coup d'oeil aux modules LDAP, Facebook ou autre ou, dans une moindre mesure il me semble, au module OpenID du core pour voir comment ça s'implémente.
Pascal

Je me suis tourné vers une solution ultra simpliste (pas forcement bien sécurisé ?)

Je vous la transmet si cela peut dépanner quelqu'un, on sait jamais :p

<?php
function monmodule_connexion($login,$password,$url)
{
    global
$user;  
  
  
//on tente une connexion avec le login et pass reçu en paramètre
       
$user = user_authenticate(array('name' => $login, 'pass' => $password));
   
  
//si la connexion est valide
  
if($user)
  {
     
//on redirige vers l'url reçu en paramètre
       
drupal_goto($url);
 }
 
//sinon on affiche un msg d'erreur
  
else
   {
      print
"<script type='text/javascript'>alert("Connexion impossible ! Login ou mot de passe incorrect...")</script>";
  }
 
   return
$user;
 
}
?>

Merci encore en tous cas ++

Salut Dyonysosd,

l'appel du module se fait de cette maniere :

<?php
//récupération des arguments
$login = $_POST["log_post"];
$pass = $_POST["pass_post"];
$url = $_POST["url_post"];

//appel de la fonction
monmodule_connexion($login,$pass,$url);

?>