Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?

[TUTO] Rester toujours connecté dans l'administartion de Magento
(1 lecteur(s)) (1) Invité(s)
Aller en basPage: 1
SUJET:

[TUTO] Rester toujours connecté dans l'administartion de Magento

#27870
Pyksel
Platinum Boarder
Messages: 1402
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Sexe: Masculin Lieu: Nice Date anniversaire: 12/09

[TUTO] Rester toujours connecté dans l'administartion de Magento

Il y a 8 Années, 1 Mois
Karma: 19  
Pour des raisons pratiques, il peut être utile d'avoir accés en permanence à l'administration de Magento. C'est surtout pratique en local pour éviter les temps de sessions administrateur et rester ainsi en parmanence connecté à l'interface d'administration de Magento. Dans ce tutoriel, nous allons voir comment faire pour permettre d'avoir cette position de connexion permanente.

Cette méthode fonctionne par la detection des IP. Vous pouvez donc utiliser celles-ci à la fois sur votre intallation locale mais aussi sur votre serveur de production. Toutefois il n'est pas conseillé d'appliquer cette méthode en serveur de production pour des raisons évidentes de securité.

La première chose à faire consiste à travailler proprement. En effet nous allons modifier un fichier du Core de Magento. Afin d'utiliser les bonnes pratiques, nous allons dupliquer ce fichier à modifier vers le repertoire local de Magento.

Dupliquez le fichier app/code/core/Mage/Admin/Model/Observer.php vers le fichier app/code/local/Mage/Admin/Model/Observer.php (Créez les répertoires nécessaires).

Image réservée aux membres.
Veuillez vous connecter ou vous enregistrer.


Nous avons dupliqué ce que nous appelon un observateur d'événements. Ce fichier est appelé en arrière plan pour effectuer certaines opérations. En l'occurence ici, cet observer vérifie notament la validité de la session administrateur. Nous allons la "hacker".

Ouvrez votre copie de fichier et trouvez les lignes suivantes :

Code :

class Mage_Admin_Model_Observer
{
    public function actionPreDispatchAdmin($event)
    {
        $session  = Mage::getSingleton('admin/session');
        /* @var $session Mage_Admin_Model_Session */
        $request = Mage::app()->getRequest();
        $user = $session->getUser();

        if ($request->getActionName() == 'forgotpassword' || $request->getActionName() == 'logout') {
            $request->setDispatched(true);
        }
[... SUITE DU CODE ...]



Nous allons ajouter ce code aprés la ligne : $user = $session->getUser();

Notez que les valeurs "utilisateurX" et "motdepasseX" sont à changer par les informations que seuls vous connaissez (Les IP et logins/mots de passe).

Code :

/* Hack - Toujours connecté par ip */
// Prototype array. array("IP" => array("LOGIN", "MOTT DE PASSE"))
$allowedIp = array(
"82.225.XX.XX" => array("utilisateur1", "motdepasse1"), // Internet... (IP FIXE) 
"83.79.XX.XX" => array("utilisateur2", "motdepasse2"), // Internet... (IP FIXE) 
"127.0.0.1" => array("utilisateur3", "motdepasse3"), // Reseau local...
);

if(!$user && array_key_exists($_SERVER["REMOTE_ADDR"], $allowedIp)) {
foreach($allowedIp as $k) {
        if(isset($allowedIp[$_SERVER["REMOTE_ADDR"]])) {
$username = $k[0];
$password = $k[1];
        }
}
$user = $session->login($username, $password, $request);
}
/* Fin du hack */




De sorte à obtenir :

Code :

class Mage_Admin_Model_Observer
{
    public function actionPreDispatchAdmin($event)
    {
        $session  = Mage::getSingleton('admin/session');
        /* @var $session Mage_Admin_Model_Session */
        $request = Mage::app()->getRequest();
        $user = $session->getUser();

/* Hack - Toujours connecté par ip */
// Prototype array. array("IP" => array("LOGIN", "MOTT DE PASSE"))
$allowedIp = array(
"82.225.XX.XX" => array("utilisateur1", "motdepasse1"), // Internet... (IP FIXE) 
"83.79.XX.XX" => array("utilisateur2", "motdepasse2"), // Internet... (IP FIXE) 
"127.0.0.1" => array("utilisateur3", "motdepasse3"), // Reseau local...
);

if(!$user && array_key_exists($_SERVER["REMOTE_ADDR"], $allowedIp)) {
foreach($allowedIp as $k) {
         if(isset($allowedIp[$_SERVER["REMOTE_ADDR"]])) {
$username = $k[0];
$password = $k[1];
         }
     }
$user = $session->login($username, $password, $request);
}
/* Fin du hack */

        if ($request->getActionName() == 'forgotpassword' || $request->getActionName() == 'logout') {
            $request->setDispatched(true);
        }
[... SUITE DU CODE ...]



Explications :

Nous créons un tableau des IP autorisées à se connecter sans login et mot de passe :

Code :

$allowedIp = array(
"82.225.XX.XX" => array("utilisateur1", "motdepasse1"), // Internet... (IP FIXE) 
"83.79.XX.XX" => array("utilisateur2", "motdepasse2"), // Internet... (IP FIXE) 
"127.0.0.1" => array("utilisateur3", "motdepasse3"), // Reseau local...
);




Où pour chaque clé, nous affectons deux valeurs. Le login (utilisateurX) et le mot de passe associé au login (motdepasseX).

Ensuite, nous effectuons une boucle en récupérant au préalable l'IP utilisée pour accéder à l'administration de Magento :

Si il n'y a pas d'utilisateur ($user) : l'IP ($_SERVER["REMOTE_ADDR"]) est elle une clé du tableau des utilisateurs autorisés ($allowedIp) ?

Code :

if(!$user && array_key_exists($_SERVER["REMOTE_ADDR"], $allowedIp)) {

}




Si oui, on fait une boucle dans qui donne la correspondances entre une clé et l'ip. Si une clé correspond à l'IP, on affecte un login et mot de passe à des varaibles...

Code :

foreach($allowedIp as $k) {
         if(isset($allowedIp[$_SERVER["REMOTE_ADDR"]])) {
$username = $k[0];
$password = $k[1];
         }
}




...puis on force Magento à connecter l'utilisateur :

Code :

$user = $session->login($username, $password, $request);



That's All !

Source : ICI
 
L'administrateur a désactivé l'accès public en écriture.
Revenir en hautPage: 1
Modérateur: Gabriiiel, ILOA, zuiko