Authentification SPIP dans phpbb3

Authentification SPIP dans phpbb3 - PHP - Programmation

Marsh Posté le 17-03-2013 à 03:31:44    

Bonjour,
 
Je cherche a intégré le forum phpbb3 dans un site sous spip2 mais cela va au-delà de mes faibles
connaissance en php/msql. Je travaille en local avec xampp sîps et phpbb3 dans la même base msql
(et non msqli pour phpbb)
 
Pour le moment grâce au plugin Commentaires PHPBB  
http://contrib.spip.net/Commentaires-PHPBB  
les commentaire sont bien redirigé vers phpbb.
 
Maintenant je cherche a avoir une seule base d'utilisateur pour les 2 applications,  
J'ai commencé ma recherche du coté de spip et de ses plugin, j'ai bien tenté
d'utilisé le plugin authext  
http://spipcarto.free.fr/?Plugin-a [...] on-externe
(origine ce ce plugin http://zone.spip.org/trac/spip-zon [...] rev=27073)
sans succès.
 
Vue le peut d'info que j'ai pu voir sur les forum et mailing officielle de spip me suis donc lancé pour une recherche du coté  
de phpbb3.
Bonne surprise sur le wiki, on peut créée un plugin authentification externe
https://wiki.phpbb.com/Authentication_plugins
Je me suis mis a la recherche de plus d'info sur le sujet et suis arrivé sur ce script datant de 2009
http://nzeyimana.nefa.se/2009/04/a [...] le-source/
 
mais il n'a pas l'air de bien fonctionné suivant ces post sur le forum de phpbb
https://www.phpbb.com/community/viewtopic.php?t=1598865
https://www.phpbb.com/community/vie [...] &t=2096370
 
J'ai poussé plus loin et le seul que j'ai pu trouvé vient d'un site russe
http://habrahabr.ru/post/150872/
passé a la moulinette de google translate  
http://translate.google.fr/transla [...] F150872%2F
et daté de septembre 2012
 
je cherche donc de l'aide affin d'adapter ce plugin a spip avec les quelques infromations que
trouvé
 
spip encode ses mot de passe en sha256 et un alea d'après ce j'ai compris sur le forum spip

Code :
  1. sha256( $alea_actuel . $password)


sur le wiki phpbb
 


The user_row created from the external data should contain the following fields:
Field                  Meaning
user_id                user identifier
username               external username
user_password          phpbb_hash of the external password
user_email             E-mail of the new user if available from the external method, blank otherwise.
Group_id               Group ID, usually the default group ID, but could also be deduced from external data
user_type              User type, defined in constants.php, usually USER_NORMAL.  


j'ai cherché les correspondance sachant que sous spip le nom d'utilisateur et celui pour ce connecté
n'est pas le même $nom et $login  


phpbb-users           spip_auteurs
         
user_id               id_auteur
username              nom
user_password         pass
user_email            email  
Group_id          
user_type             statut
 
et donc
username_clean        login


voilà ou en sont mes recherche et je cherche de l'aide car cela dépasse mes compétence.
 
En vous remerciant  
 
je joins ci dessous le script du site russe avec les commentaires traduit car la moulinette de google
pourrit un peut tout a la traduction
 

Code :
  1. <?php
  2. /**
  3. *
  4. * Autorisation plugin Sample phpBB3
  5. *
  6. */
  7. if (!defined('IN_PHPBB'))
  8. {
  9.    exit;
  10. }
  11. /**
  12. * renvoie des informations sur l'utilisateur courant
  13. */
  14. function get_user_data()
  15. {
  16.        $result['user_email'] = “user@example.com”;
  17.        $result['username'] = “username”;
  18.        $result['user_password'] = “user_password”;
  19.        return $result;
  20. }
  21. /**
  22. * Fonction responsable de l'autorisation.
  23. */
  24. function login_simple(&$username, &$password)
  25. {
  26.     $auth = get_user_data();
  27.  
  28.     // Si l'autorisation n'est pas possible
  29.     if (!is_array($auth) || empty($auth))
  30.     {
  31.        return array(
  32.                    'status' => LOGIN_ERROR_USERNAME,
  33.                    // Message par clé ACCESS_DIRECTLY_DENIDED être ajoutées aux fichiers language/<language>/common.php
  34.                    'error_msg' => 'ACCESS_DIRECTLY_DENIDED',
  35.                    'user_row' => array('user_id' => ANONYMOUS),
  36.        );
  37.     }
  38.  
  39.     global $db;
  40.     $sql = 'SELECT user_id, username, user_password, user_passchg, user_email, user_type
  41.            FROM ' . USERS_TABLE . "
  42.            WHERE username_clean = '" . $db->sql_escape($auth['username']) . "'";
  43.     $result = $db->sql_query($sql);
  44.     $row = $db->sql_fetchrow($result);
  45.     $db->sql_freeresult($result);
  46.  
  47.     if ($row){
  48.        $res = array(
  49.                    'status'     => LOGIN_SUCCESS, // all clear
  50.                    'error_msg'  => false// aucune erreur
  51.                    'user_row'     => array(
  52.                        'user_id' => $row['user_id'],  //ID utilisateur phpbb
  53.                        'username'       => $row['username'],  // Du nom d'affichage
  54.                        'user_password'  => $row['user_password'],  // phpbb-hash du mot de passe
  55.                        'user_email'     => $row['user_email'],  // E-mail de l'utilisateur, s'il existe un
  56.                        'user_type'      => 0,  // type d'utilisateur (admin \ pas admin, etc)
  57.                        'group_id' => 2  // groupe par défaut
  58.                        )
  59.                    );
  60.        return $res;
  61.     }
  62.      
  63.     // Annoncer que l'authentification est réussie.
  64.     $res = array(
  65.                        'status'     => LOGIN_SUCCESS_CREATE_PROFILE,
  66.                        'error_msg'  => false,
  67.                        'user_row'     => array(
  68.                            "username"       => $auth['username'],  // Du nom d'affichage
  69.                            "user_password"  => phpbb_hash($auth['user_password']),  // phpbb-hash du mot de passe
  70.                            "user_email"     => $auth['user_email'],  // E-mail de l'utilisateur, s'il existe un
  71.                            "user_type"      => 0,
  72.                            "group_id" => 2
  73.                        ),
  74.     );
  75.     return $res;
  76. }
  77. /**
  78. * Fonction responsable de l'enregistrement et de l'autorisation d'un utilisateur de la première visite.
  79. */
  80. function autologin_simple()
  81. {
  82.     // nom d'utilisateur et mot de passe sera reçu dans la fonction, en passant le cap
  83.     $u = "";
  84.     $user_row = login_simple($u, $u);
  85.     // Si vous n'êtes pas encore inscrit
  86.     if ($user_row['status'] == LOGIN_SUCCESS_CREATE_PROFILE)
  87.     {
  88.        global $phpbb_root_path, $phpEx;
  89.        if (!function_exists('user_add'))
  90.        {
  91.                include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
  92.        }
  93.        $user_row['user_row']['user_id'] = user_add($user_row['user_row']);
  94.     }
  95.     // retourner les données de l'utilisateur
  96.     global $db;
  97.     $sql = 'SELECT * FROM ' . USERS_TABLE . " WHERE user_id = '" . $db->sql_escape($user_row['user_row']['user_id']) . "'";
  98.     $result = $db->sql_query($sql);
  99.     $row = $db->sql_fetchrow($result);
  100.     $db->sql_freeresult($result);
  101.     return $row;
  102. }
  103. ?>


Reply

Marsh Posté le 17-03-2013 à 03:31:44   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed