Récuparation variables user pour authentification
killerman31 Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre killerman31
- Inscrit le : 25/11/2010
J'aurais besoin d'un petit coup de main pour adapter un outil php existant.
En gros, j'ai besoin de connaitre le fonctionnement de phpboost (niveau noyeau et user) pour éviter une double authentification.
En gros on s'identifie sur phpboost, et ça conserve l'authentification pour mon module.
Il me faudrait donc "traduire" ce bout de code (sous Vbulletin actuellement) pour l'adapter à phpboost. Seul soucis, je ne connais pas les bons fichiers à appeler ni comment est géré les variables du USER.
Si une ame charitable passe par la, j'apprécierai grandement. Merci
Voici le bout de code à traduire en phpboost:
Code PHP :
// login function for vBulletin function pLogin() { global $pConfig_auth; // redirect to Vbulletins's login form, with a return to this page. header("Location: " . $pConfig_auth['vBulletin_url']); exit; } // logout function for vBulletin function pLogout() { global $vbulletin,$pConfig_auth; // unset the session and remove all cookies foreach($_SESSION as $key=>$value) unset($_SESSION[$key]); // vBulletin session kill include_once($pConfig_auth['vBulletin_path'].'includes'.DIRECTORY_SEPARATOR.'functions_login.php'); process_logout(); } // Hack checking if (isset($_GET['pConfig_auth[vBulletin_path]']) || isset($_POST['pConfig_auth[vBulletin_path]'])) { // add logging when availible here. die('Hack attempt.'); } else { // setup vBulletin user integration define('VB_AREA', 'Forum'); define('CWD', $pConfig_auth['vBulletin_path']); include_once($pConfig_auth['vBulletin_path'].'includes'.DIRECTORY_SEPARATOR.'init.php'); // Get vBulletin userinfo $user = $vbulletin->userinfo; $pMain = new Mainframe(pVerify($user));
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
killerman31 Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre killerman31
- Inscrit le : 25/11/2010
Il est écrit en php et propose la possibilité de gérer son authentification en passant par un cms qui dispose deja d'un système d'authentification.
C'est pour ça que j'ai mis en exemple la partie de code déja faite pour Vbulletin (mais il y en a d'autres, phpbb, joomla, etc) et que j'aimerai l'adapter pour phpboost.
J'ai cherché un long moment, mais ne connaissant pas bien le fonctionnement du noyeau phpboost, j'ai rien fait de valide.
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Si il s'agit de la deuxième solution, c'est assez compliqué. Pour la première en revanche c'est plus simple.
PS : avec le code que tu montres je n'ai pas réussi à répondre à ma question car pour moi il y a un peu des deux.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
killerman31 Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre killerman31
- Inscrit le : 25/11/2010
Puis en fait, en regardant bien tout le code, j'ai remarqué que la seule partie de code qui variait quel que soit le CMS utilisé était celle "quote" dans le premier post.
Citation :Tu veux juste savoir si les informations rentrées par l'utilisateur sont correctes ou tu as besoin de travailler avec les mêmes cookies de façon à avoir une authentification unique (et pas simplement un couple login / mot de passe) sur les deux site ?
Je ne sais pas répondre à ta question... Je pense que le but, c'est de fournir à mon calendrier les mêmes prérequis que ceux du forum ou de la chatbox. A savoir, que l'utilisateur soit bien authentifié sur site.
Peut être que si je te link tout le fichier ça t'aidera à y voir plus clair?
Merci de ton aide en tous cas!
PS: je t'ai linké le code du phpbb3 pour changer.
Code PHP :
<?php /*************************************************************************** * auth_phpbb3.php * ------------------- * begin : June 6, 2007 * copyright : (C) 2005 Kyle Spraggs - mod for phpBB3 keldrak@gmail.com * email : spiffyjr@gmail.com * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ // no direct access defined('_VALID_RAID') or die('Restricted Access'); // check profile // Specific to phpBB authentication only. Checks to see if a profile exists // for phpBB user and if not, creates one. function pVerify($user) { global $db_raid, $pConfig, $pConfig_auth; $userdata = array(); // Check that it's not an anonymous user or a bot that's authenticated by phpBB3 if ($user->data['user_id'] != '1' && $user->data['is_registered'] == 1 && $user->data['username'] != 'Anonymous' && empty($user->data['is_bot'])) { $sql['SELECT'] = '*'; $sql['FROM'] = 'profile'; if (empty($pConfig_auth['phpbb_bridge_on_id'])) { $sql['WHERE'] = 'user_email = '.$db_raid->quote_smart(utf8_decode($user->data['user_email'])); } else { $sql['WHERE'] = 'profile_id='.intval($user->data['user_id']); } $result = $db_raid->set_query('select', $sql, __FILE__, __LINE__); unset($sql); // if nothing returns we need to create profile // otherwise they have a profile so let's set their ID // we'll just use the phpBB user id as the profile ID to simplify things if(($db_raid->sql_numrows($result) == 0)) { // are they a super user? $sql['SELECT'] = '*'; $sql['FROM'] = 'profile'; $sql['WHERE'] = 'profile_id>0'; $check = $db_raid->set_query('select', $sql, __FILE__, __LINE__); // nothing returned, create profile $sql['INSERT'] = 'profile'; $sql['VALUES'] = array( 'profile_id'=>$user->data['user_id'], 'user_email'=>utf8_decode($user->data['user_email']), 'password'=>'', 'group_id'=>(($db_raid->sql_numrows($check) == 0)?1:$pConfig['default_group']), 'username'=>utf8_decode($user->data['username']), 'join_date'=>time()); $db_raid->set_query('insert', $sql, __FILE__, __LINE__); $userdata['group_id'] = $sql['VALUES']['group_id']; } else { // profile exists set group $data = $db_raid->sql_fetchrow($result); $userdata['group_id'] = $data['group_id']; } // setup session information $userdata['profile_id'] = $user->data['user_id']; $userdata['session_logged_in'] = 1; $userdata['username'] = utf8_decode($user->data['username']); $userdata['user_email'] = utf8_decode($user->data['user_email']); $userdata['timezone'] = ''; $userdata['dst'] = ''; } return $userdata; } // login function for phpBB3 function pLogin() { global $pConfig_auth; // redirect to phpbb3's login form, with a return to this page. header("Location: " . $pConfig_auth['phpbb_url'].'/ucp.php?mode=login&redirect='.$_SERVER['PHP_SELF']); exit; } // logout function for phpBB function pLogout() { global $user; // unset the session and remove all cookies foreach($_SESSION as $key=>$value) unset($_SESSION[$key]); // phpbb3 session kill $user->session_kill(); } // define our auth type if( isset( $_GET["phpbb_root_path"] ) || isset( $_POST["phpbb_root_path"]) || isset($_GET['pConfig_auth[phpbb_path]']) || isset($_POST['pConfig_auth[phpbb_path]']) ) { log_hack(); die('Hack attempt.'); } else { $phpbb_root_path = $pConfig_auth['phpbb_path']; $phpEx = substr(strrchr(__FILE__, '.'), 1); // setup phpBB user integration define('IN_PHPBB', true); include_once($pConfig_auth['phpbb_path'].'common.php'); global $user_group_table; $user_group_table = $table_prefix . "user_group"; // Start session management - phpBB3 $user->session_begin(); $auth->acl($user->data); $user->setup(); // remove the phpbb3 template variable. unset($template); $db_raid->sql_query('SET NAMES DEFAULT'); $db_raid->sql_query('SET SESSION sql_mode=DEFAULT'); $pMain = new Mainframe(pVerify($user)); } ?>
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
killerman31 Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre killerman31
- Inscrit le : 25/11/2010
Je veux bien, mais faut que je recode tout non (en gros créer un module?)
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
killerman31 Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre killerman31
- Inscrit le : 25/11/2010
En gros, ce que je cherche à faire, c'est un calendrier de gestion d'évènements.
En gros tu planifies un évènement.
Les gens s'enregistrent à cet évènement soit en tant que présent, absent ou en liste d'attente.
Et les "managers" (à gérer via les droits) ont le droit de passer les inscrits d'une "catégorie de présence" à une autre.
Je pourrais détailler plus le cahier des charges, mais l'outil dont je vous ai parlé fait déjà ça très très bien. Il faudrait juste que je gère l'intégration de l'authentification à phpboost (objet de ma demande), ou que je recode tout dans l'environnement phpboost (mais ça me parait beaucoup plus long vu mes compétences limitées...)
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Je pense que actuellement, il va falloir importer pas mal de classe (du type SQL) sans toucher à l'environnement de PBT.
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Soit une intégration complète à PHPBoost, soit un simple interfaçage sur le système d'authentification, que ce soit en utilisant du code de PHPBoost (peu probable car le code de PHPBoost fonctionnera difficilement en dehors de l'environnement), soit en réécrivant l'authentification, et ça c'est vraiment long et pas marrant à faire.
Pourrais-tu me donner le lien de l'application que tu voudrais intégrer (ou alors directement l'archive). Ca me permettra d'y donner un petit coup d'oeil et de voir quelle solution est la plus appropriée, car à première vue, je ne suis pas en mesure de dire quelle est la meilleure des deux solutions.
Quoi qu'il en soit, ce que tu cherches à faire n'est pas trivial, et il faudra souffrir d'une manière ou d'une autre.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
killerman31 Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre killerman31
- Inscrit le : 25/11/2010
Tu trouveras "l'adaptation de l'authentification" dans la partie "authentification".
Phpraider étant l'authentification de base du calendrier, et chaque autre répertoire représentant l'authentification adaptée pour chaque CMS.
Citation :Quoi qu'il en soit, ce que tu cherches à faire n'est pas trivial, et il faudra souffrir d'une manière ou d'une autre.
C'est ce qui me semble bizarre...
Car quand je regarde ce qui a été fait pour les autres CMS, ca ne représente pas plus qu'une 10 aine de ligne de code (celles linkées plus haut).
Merci beaucoup en tout cas de votre aide.
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Par contre, je n'arrive pas à cerner le point d'entrée de ce script dans le système d'authentification tiers. Je ne comprends pas bien comment ça fonctionne. Je suis allé sur le site qui me semble être le site officiel, et je n'ai pas réussi à trouver la documentation. Tu saurais où on pourrait trouver des renseignements supplémentaires ?
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
killerman31 Membre non connecté
Booster Minigun
-
Booster Minigun
- Voir le profil du membre killerman31
- Inscrit le : 25/11/2010
Malheureusement, il n'ya plus beaucoup d'activité dessus. Et je ne connais pas d'autre site qui parlent de ça. Mais je vais chercher.
ben.popeye Membre non connecté
-
Modérateur
- Voir le profil du membre ben.popeye
- Inscrit le : 04/08/2005
- Site internet
- Groupes :
-
Equipe Historique
Le projet a l'air en effet abandonné. Je ne sais pas si c'est une bonne idée de se lancer dans l'intégration d'un projet qui n'est plus presque plus maintenu.
Un problème, une question ? Cherchez dans la FAQ ou la documentation. Si vous ne trouvez pas la réponse, demandez du support sur le forum.
Bjarne Stroustrup, inventeur du C++ :"There are two ways to write error-free programs; only the third works."
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie