1. IMPORTANT : Nouvelles mesures de sécurité - 2. Règles pour obtenir de l'aide dans les forums de support - 3. Restrictions des droits pour le groupe "Support suspendu"

Il est obligatoire de respecter les Règles de MyBB.fr : Version abrégée ou Version complète pour obtenir du support sur nos forums.

Les membres ayant un site/forum contrevenant aux règles de MyBB.support seront placés dans le groupe "Support suspendu" et ne bénéficieront plus du support du staff. Nous recommandons aux autres membres d'agir de même. Il ne s'agit pas d'un bannissement, le membre retrouvera son statut "normal" dès que sa situation sera conforme aux règles.

Nouveau : un Wiki en français : plus de détails.
Avant de soumettre votre problème, consultez-le, ainsi que la FAQ, sans oublier le moteur de recherche interne.


Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[Réglé] Bridge pour MushRaider
Mots-clés » bridge, mushraider
16-08-2015, 20:40,
#1
Bridge pour MushRaider

VERSION_MyBB : 1.8.4
Bonjour,

Je voulais savoir si quelqu'un pourrait m'aider à mettre en place un Bridge pour un RaidPlanner que j'utilise MushRaider,
des indications sont donné pour créer un Brigde pour MushRaider sur le site du développeur (Ici), mais vu que je maîtrise pas le php et les plugin sur MyBB j'aurais donc besoin de l'aide si quelqu'un de familier avec MyBB veut bien m'aider Smile

Merci d’avance.
Répondre
27-08-2015, 10:24, (Modification du message : 27-08-2015, 11:06 par Akenstorm.)
#2
RE: Bridge pour MushRaider
J'ai tenté de me débrouiller et j'ai fais ceci comme base juste pour valider l'utilisateur:

Code PHP :
<?php
define
("IN_MYBB",1);
require_once 
"./global.php";
require_once 
MYBB_ROOT."inc/functions_user.php";

/*
Bridge exemple for MushRaider
More infos on http://mushraider.com/bridge
*/
header('Content-Type: application/json');
 
// Secret key added in MushRaider's admin
$salt '***********************';

 
// Test if we get the login & password infos
if(empty($_POST['login']) || empty($_POST['pwd'])) {
 
   echo json_encode(array('authenticated' => false));
 
   exit;
}
else

    
// Decrypt password
    // No reason to change this
    
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_ECB);
    
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
    
$pwd mcrypt_decrypt(MCRYPT_RIJNDAEL_128$saltstripslashes($_POST['pwd']), MCRYPT_MODE_ECB$iv);

    
$result_username username_exists($_POST['login']);
    if (
$result_username != false)
    {
        
$result_password validate_password_from_username($_POST['login'], $pwd);
        if (
$result_password != false)
        {
            
$userInfos = array();
            
$userInfos['authenticated'] = true// Or false if don't
            
$userInfos['email'] = 'email@domain.com'// Replace it with the user's email, offcourse
            
$userInfos['role'] = 'member'// Optional parameter, force & set the role for this user. Can be 'member' (default), 'officer' or 'admin'
             
            
echo json_encode($userInfos);
            exit;
        }
        else 
        {
            echo 
json_encode(array('authenticated' => false));
            exit();
        }
    }
    else 
    {
        echo 
json_encode(array('authenticated' => false));
        exit();
    }
}
?>

mais il semblerait que que le code renvoi toujours "'authenticated' => false" et ne vas pas plus loin car quand j'essaye de me connecter après activation du bridge au raidplanner il m'indique que le le password ou username est incorrect.

Quelqu'un veut bien m'aiguiller ? Smile
Répondre
27-08-2015, 12:30,
#3
RE: Bridge pour MushRaider
Bonjour Akenstorm, et désolé que vous n'ayez pas obtenu de réponse.

Dans un premier temps, pouvez-vous nous indiquer dans quel sens vous souhaiteriez que votre bridge fonctionne : si vous voulez que les utilisateurs se connectent à MushRaider avec leurs identifiants MyBB, ou l'inverse.

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
27-08-2015, 13:26,
#4
RE: Bridge pour MushRaider
Je cherche à ce que les utilisateurs puissent se connecter avec leurs identifiants MyBB, vu que le Bridge pré-intégré de Mushraider est configuré pour envoyé les identifiants au code que j'ai fais pour le validé ou non en fonction de la DB de MyBB.
Enfin c'est ce que j'ai compris Smile
Répondre
27-08-2015, 15:59,
#5
RE: Bridge pour MushRaider
Personnellement, je ne pense pas que je pourrai vous aider sur cette question.
Peut-être Exdiogene aura une petite idée...

Cordialement,
Saphir,
Modérateur MyBB.support.
Répondre
27-08-2015, 18:58,
#6
RE: Bridge pour MushRaider
Je vais attendre un réponse de sa part du coup ^^
Répondre
27-08-2015, 19:36,
#7
RE: Bridge pour MushRaider
En analysant le code fourni, il y a des erreurs si c'est le nom d'utilisateur et le mot de passe inhérent à MyBB qui doivent être utilisés pour la connexion.

Voici la version corrigée pour obtenir le résultat attendu :

Code PHP :
<?php
define
("IN_MYBB",1);
require_once 
"./global.php";
require_once 
MYBB_ROOT."inc/functions_user.php";

/*
Bridge exemple for MushRaider
More infos on http://mushraider.com/bridge
*/
header('Content-Type: application/json');
 
// Secret key added in MushRaider's admin
$salt '***********************';

 
// Test if we get the login & password infos
if(empty($_POST['login']) || empty($_POST['pwd'])) {
 
   echo json_encode(array('authenticated' => false));
 
   exit;
}
else

    $pwd stripslashes($_POST['pwd']);

 
   $result_username username_exists($_POST['login']);
 
   if ($result_username != false)
 
   {
 
       $result_password validate_password_from_username($_POST['login'], $pwd);
 
       if ($result_password != false)
 
       {
 
           $userInfos = array();
 
           $userInfos['authenticated'] = true// Or false if don't
 
           $userInfos['email'] = $result_password['email']; // Replace it with the user's email, offcourse
 
           $userInfos['role'] = 'member'// Optional parameter, force & set the role for this user. Can be 'member' (default), 'officer' or 'admin'
 
            
            echo json_encode
($userInfos);
 
           exit;
 
       }
 
       else 
        
{
 
           echo json_encode(array('authenticated' => false));
 
           exit();
 
       }
 
   }
 
   else 
    
{
 
       echo json_encode(array('authenticated' => false));
 
       exit();
 
   }
}
?>

Avec ce code vous obtiendrez l'adresse de courriel du membre au retour d'une connexion réussie!

Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
27-08-2015, 22:42, (Modification du message : 27-08-2015, 23:04 par Akenstorm.)
#8
RE: Bridge pour MushRaider
Alors pour la correction que vous m'avez donné bug mais je ne sais pas du tout pourquoi la page renvoi :
Code :
false)); exit;}else{ $pwd = stripslashes($_POST['pwd']); $result_username = username_exists($_POST['login']); if ($result_username != false) { $result_password = validate_password_from_username($_POST['login'], $pwd); if ($result_password != false) { $userInfos = array(); $userInfos['authenticated'] = true; // Or false if don't $userInfos['email'] = $result_password['email']; // Replace it with the user's email, offcourse $userInfos['role'] = 'member'; // Optional parameter, force & set the role for this user. Can be 'member' (default), 'officer' or 'admin' echo json_encode($userInfos); exit; } else { echo json_encode(array('authenticated' => false)); exit; } } else { echo json_encode(array('authenticated' => false)); exit; }}?>

A la place de :
Code :
{"authenticated":false}

du coup j'ai ajouté votre correction sur mon code ce qui donne :
Code PHP :
<?php

define
("IN_MYBB",1);

require_once 
"./global.php";

require_once 
MYBB_ROOT."inc/functions_user.php";



/*

Bridge exemple for MushRaider

More infos on http://mushraider.com/bridge

*/

header('Content-Type: application/json');

 

// Secret key added in MushRaider's admin

$salt '**********************';



 

// Test if we get the login & password infos

if(empty($_POST['login']) || empty($_POST['pwd'])) {

 
   echo json_encode(array('authenticated' => false));

 
   exit;

}

else



    
// Decrypt password

    // No reason to change this

    
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_ECB);

    
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);

    
$pwd mcrypt_decrypt(MCRYPT_RIJNDAEL_128$saltstripslashes($_POST['pwd']), MCRYPT_MODE_ECB$iv);



    
$result_username username_exists($_POST['login']);

    if (
$result_username != false)

    {

        
$result_password validate_password_from_username($_POST['login'], $pwd);

        if (
$result_password != false)

        {

            
$userInfos = array();

            
$userInfos['authenticated'] = true// Or false if don't

            
$userInfos['email'] = $result_password['email']; // Replace it with the user's email, offcourse

            
$userInfos['role'] = 'member'// Optional parameter, force & set the role for this user. Can be 'member' (default), 'officer' or 'admin'

             

            
echo json_encode($userInfos);

            exit;

        }

        else 

        {

            echo 
json_encode(array('authenticated' => false));
            exit;
        }

    }

    else 

    {

 
       echo json_encode(array('authenticated' => false));
        exit;
 
   }

}

?>
(j'ai pas enlevé le décryptage car je pense que le dev de MushRaider l'a mit car le mot de passe que l'API de MushRaider envoi à la page est crypté)
Mais malheureusement ça ne fonctionne pas non plus je ne comprends pas ^^'

Ps: Si ça peut aider voilà la code du bridge pour phpbb :
Code PHP :
<?php
/**
*
* @package phpBB Extension - phpBB Mushraider
* @copyright (c) 2015 Kyah (Julien Goret)
* @license http://opensource.org/licenses/gpl-2.0.php GNU General Public License v2
*
*/

/**
* @ignore
*/
namespace octetsetquartdepouces\mushraider\controller;
class 
login {
  public function 
__construct(\phpbb\config\config $config, \phpbb\user $user, \phpbb\auth\auth $auth, \phpbb\request\request $request, \phpbb\controller\helper $helper$root_path$php_ext)
  {
    
$this->config $config;
    
$this->user $user;
    
$this->auth $auth;
    
$this->request $request;
    
$this->helper $helper;
    
$this->root_path $root_path;
    
$this->php_ext $php_ext;
  }

  public function 
base() {
    
header('Content-Type: application/json');
    require(
$this->root_path 'includes/constants.' $this->php_ext);
    require(
$this->root_path 'includes/functions_user.' $this->php_ext);
    
$this->user->session_begin();
    
$this->auth->acl($this->user->data);
    if (
$_POST) {
      if (!isset(
$_POST['login']) || !isset($_POST['pwd'])) {
        echo 
json_encode(array('authenticated' => false));
        exit;
      } else {
        
$username request_var('login''');
        
$pwd $this->request->get_super_global(\phpbb\request\request_interface::POST)['pwd'];
        
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_ECB);
        
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
        
$salt trim($this->config['mushraider_apikey']);
        
$password utf8_decode(trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128$saltstripslashes($pwd), MCRYPT_MODE_ECB$iv)));;
        
$username request_var('login''');
        
// Test if phpBB connects user
        
$result $this->auth->login($username$password);
        
$error $result['error_msg'];
        if (
$result['status'] == LOGIN_SUCCESS)
        {
          
$admins explode(','$this->config['mushraider_admin']);
          
$officers explode(','$this->config['mushraider_officers']);
          
$members explode(','$this->config['mushraider_members']);
          
//User was successfully logged into phpBB
          
$phpbbUserRow $result['user_row'];
          
$user_id $phpbbUserRow['user_id'];
          
$userInfos = array();
          
// Here we need to find if user is admin, officer or member!
          
foreach ($admins as $admin_group) {
            if (!isset(
$userRole) && group_memberships($admin_group,$user_id,true)) {
              
$userRole 'admin';
            }
          }
          foreach (
$officers as $officer_group) {
            if (!isset(
$userRole) && group_memberships($officer_group,$user_id,true)) {
              
$userRole 'officer';
            }
          }
          foreach (
$members as $member_group) {
            if (!isset(
$userRole) && group_memberships($member_group,$user_id,true)) {
              
$userRole 'member';
            }
          }
          if (isset(
$userRole)) {
            
// Everything is OK!
            
$isAuthenticated true;
            
$userInfos['email'] = $phpbbUserRow['user_email'];
            
$userInfos['role'] = $userRole;
          } else {
            
$isAuthenticated false;
          }
          
// Return json to mushraider
          
$userInfos['authenticated'] = $isAuthenticated;
          echo 
json_encode($userInfos);
        }
        else {
          echo 
json_encode(array('authenticated' => false));
        }
        exit;
      }
    } else {
      
// If we don't come from mushraider, send them back to home...
      
redirect(append_sid("{$this->root_path}index.$this->php_ext"));
    }
  }
}
?>

>Lien pour Télécharger le fichier complet<
Répondre
27-08-2015, 23:47,
#9
RE: Bridge pour MushRaider
Il y a beaucoup de confusion dans votre demande et vos commentaires.

Est-ce que vous voulez utiliser le nom d'utilisateur et le mot de passe de MyBB pour vous connecter sur une page de MushRaider, ou le contraire?

Si c'est le premier, mon code est fonctionnel car je l'ai testé en ligne. Vous avez du mal copié le code...

J'ai retiré la portion "mcrypt" car elle interfère avec la méthode utilisée par MyBB pour valider la connexion...

Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
28-08-2015, 0:11,
#10
RE: Bridge pour MushRaider
Je voudrais me connecter à MushRaider avec les identifiants MyBB, j'ai re-testé votre méthode mais il semblerait qu'il ai un problèmes car ça ne fonctionne pas pour moi, vous avez copiez dans quel dossier de MyBB le plugin ? sur Mushraider vous avez indiqué l'url du plugin ?
De mon côté j'ai placé le fichier à cette url : http://lacommunaute-teso.ddns.net/mushraider.php où j'y ai copié votre code corrigé
qui est la même adresse que j'ai indiqué dans l'admin de MushRaider pour le Bridge.
Répondre
28-08-2015, 0:26, (Modification du message : 28-08-2015, 0:27 par exdiogene.)
#11
RE: Bridge pour MushRaider
Premièrement je tiens à vous signaler que le lien du droit d'auteur de MyBB n'apparait pas dans votre pied de page, ce qui est contraire à nos règles!

Je ne vous dirai que ceci : Lorsque vous avez collé le code PHP, tous les sauts de lignes ont disparus...

Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
28-08-2015, 0:52,
#12
RE: Bridge pour MushRaider
Oups merci de m'avoir prévenu pour le footer j'ai fail quand je me suis occupé du Thème (j'ai edit ça) ....

J'ai retapé le code ligne par ligne, le bug d'avant ne semble plus avoir lieux mais cela ne fonctionne toujours pas ^^'
Répondre
28-08-2015, 0:57,
#13
RE: Bridge pour MushRaider
Si votre formulaire qui envoie le nom d'utilisateur et le mot de passe vers ce fichier, les envoient en clair, ils seront validés. Vous verrez alors la ligne affichant votre adresse de courriel de MyBB.

Pour en être certain, il me faudrait le code du formulaire envoyant les données à ce code...

Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
28-08-2015, 1:01,
#14
RE: Bridge pour MushRaider
Le formulaire(L'API MushRaider) envoie le login en clair et le mot de passe en crypté ce qui justifie :

Code PHP :
// Secret key added in MushRaider's admin
$salt 'YOUR_SECRET_KEY'

et le décryptage :
Code PHP :
// Decrypt password
// No reason to change this
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_ECB);
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
$pwd mcrypt_decrypt(MCRYPT_RIJNDAEL_128$saltstripslashes($_POST['pwd']), MCRYPT_MODE_ECB$iv); 
Répondre
28-08-2015, 1:11,
#15
RE: Bridge pour MushRaider
Alors si le mot de passe est crypté avant d'être envoyé en "POST", il faudra donc le décrypter avec probablement ces trois lignes.

Ne connaissant pas les méthodes de "MushRaider", je ne peux pas vous aider sur ce point.

Mais vous pourriez confirmer la validation de la connexion si vous pouviez envoyer le mot de passe en clair avec mon code...

Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
28-08-2015, 1:21,
#16
RE: Bridge pour MushRaider
Bah les seules explication que donne le dev de Mushraider pour créer un bridge avec son API c'est cette exemple :

Code PHP :
/*
Bridge exemple for MushRaider
More infos on http://mushraider.com/bridge
*/
header('Content-Type: application/json');
 
// Secret key added in MushRaider's admin
$salt 'YOUR_SECRET_KEY';
 
// Test if we get the login & password infos
if(empty($_POST['login']) || empty($_POST['pwd'])) {
    echo 
json_encode(array('authenticated' => false));
    exit;
}
 
// Decrypt password
// No reason to change this
$iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_ECB);
$iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
$pwd mcrypt_decrypt(MCRYPT_RIJNDAEL_128$saltstripslashes($_POST['pwd']), MCRYPT_MODE_ECB$iv);
 
/*
* Test here if the user exist and have the good permissions etc...
* Code goes here...
*/
// Return json to mushraider
$userInfos = array();
$userInfos['authenticated'] = true// Or false if don't
$userInfos['email'] = 'email@domain.com'// Replace it with the user's email, offcourse
$userInfos['role'] = 'member'// Optional parameter, force & set the role for this user. Can be 'member' (default), 'officer' or 'admin'
 
echo json_encode($userInfos);
exit; 

Indiqué sur cette >page<
Mais je sais pas si ça vous aide beaucoup ^^' , je vais cherché dans les dossier de Mushraider où se trouve le formulaire qui envoi le Login/pwd si je le trouve je le mettrai sur le post.
Répondre
28-08-2015, 1:31,
#17
RE: Bridge pour MushRaider
J'avais déjà consulté les trois exemples de Brigde pour MushRaider...

Généralement les mots de passe sont envoyés en clair avec les formulaire, je trouve cela vraiment curieux!

Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
28-08-2015, 9:06, (Modification du message : 28-08-2015, 9:20 par Akenstorm.)
#18
RE: Bridge pour MushRaider
Bah pourtant pour le code de phpBB ils utilisent le décryptage:
Code PHP :
else {
 
       $username request_var('login''');
 
       $pwd $this->request->get_super_global(\phpbb\request\request_interface::POST)['pwd'];
 
       $iv_size mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128MCRYPT_MODE_ECB);
 
       $iv mcrypt_create_iv($iv_sizeMCRYPT_RAND);
 
       $salt trim($this->config['mushraider_apikey']);
 
       $password utf8_decode(trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128$saltstripslashes($pwd), MCRYPT_MODE_ECB$iv)));;
 
       $username request_var('login'''); 
et je ne vois pas l’intérêt d'avoir une clé pour l'API et ne pas l'utilisé ^^'
Répondre
28-08-2015, 11:43,
#19
RE: Bridge pour MushRaider
Je vous souhaites donc bonne chance dans votre projet, car la portion de MyBB est réglée... Wink

Administrateur de MyBBCodes.com
Cool " Ce n'est pas ce que vous savez qui est important, c'est ce que vous faites ou ne faites pas!"
Obtenez plus de 175 plugins pour MyBB ici...
~~ AUCUNE AIDE Par MP, MAIL OU MSN !!!~~
Répondre
28-08-2015, 12:16,
#20
RE: Bridge pour MushRaider
(28-08-2015, 11:43)exdiogene a écrit :  Je vous souhaites donc bonne chance dans votre projet, car la portion de MyBB est réglée... Wink
Oui c'était surtout ça que je voulais vérifié le reste je verrais avec le dev de mushraider sur son forum.
Merci beaucoup pour l'aide Smile
Répondre




Utilisateur(s) parcourant ce sujet :

Contact | MyBB.support | Retourner en haut | Retourner au contenu | Version bas-débit (Archivé) | Syndication RSS
 Utilitaire de traduction fourni par Regentronique