Passwortschutz

7

In diesen Tagen habe ich eine Magento-Instanz bereitgestellt, aber der Webshop ist noch nicht online. Daher habe ich .htaccessder Website einen Kennwortschutz hinzugefügt , der zwar einwandfrei funktioniert hat, aber Probleme verursacht hat, als mein Kunde Bilder für seine Produkte hochladen wollte.

Gibt es eine Möglichkeit, den gesamten Store für Entwicklungszwecke mit einem Passwort zu schützen, indem Magento-Funktionen selbst verwendet werden, sodass angemeldete Benutzer vollen Zugriff auf die Seite haben, jedoch nicht auf die Öffentlichkeit?

Ich bin auf dieses Modul gestoßen, aber es ist leider nicht mit Magento 1.8 kompatibel, oder ich weiß nicht, wie ich es installieren soll.

Danke für die Hilfe!

philipp
quelle
Haben Sie es geschafft, Ihr Problem zu lösen?
Sander Mangel
Ihre Antwort sieht sehr gut aus, ich werde es so schnell wie möglich versuchen, aber im Moment stört mich leider etwas anderes, aber ich werde Sie so schnell wie möglich informieren!
Philipp
Eine Problemumgehung, damit der Flash-Upload ohne Authentifizierung funktioniert, finden Sie hier: stackoverflow.com/questions/9675004/… (Warnung: Dies ist unsicher, da es den Zugriff auf die Site nicht verhindert, sondern nur den Zugriff darauf kompliziert macht Pflege)
Fabian Schmengler

Antworten:

3

Sie können eine kleine benutzerdefinierte Erweiterung schreiben, die überprüft, ob der Benutzer über die Berechtigung zum Zugriff auf die Site verfügt.

Du config.xmlwürdest ungefähr so ​​aussehen

<?xml version="1.0"?>
<config>
   <modules>
      <[Namespace]_[Module]>
         <version>1.0.0</version>
      </[Namespace]_[Module]>
   </modules>
   <global>
      <models>
         <[module]>
            <class>[Namespace]_[Module]_Model</class>
         </[module]>
      </models>
      <events>
         <controller_front_init_before>
            <observers>
               <[namespace]_[module]_access_observer>
                  <type>singleton</type>
                  <class>[Namespace]_[Module]_Model_Observer</class>
                  <method>checkAccess</method>
               </[namespace]_[module]_access_observer>
            </observers>
         </controller_front_init_before>
      </events>
   </global>
</config>

Und Ihre Beobachterklasse so etwas

class [Namespace]_[Module]_Model_Observer
{
   public function checkAccess()
   {
      $adminurl = (string)Mage::getConfig()->getNode('admin/routers/adminhtml/args/frontName');

      $urlstring = Mage::helper('core/url')->getCurrentUrl();
      $url = Mage::getSingleton('core/url')->parseUrl($urlstring);

      if (strstr($url->path, "/{$adminurl}"))   return $this; // this is the admin section

      // get admin session
      Mage::getSingleton('core/session', array('name' => 'adminhtml'))->start();

      $admin_logged_in = Mage::getSingleton('admin/session', array('name' => 'adminhtml'))->isLoggedIn();

      // return to frontend section
      Mage::getSingleton('core/session', array('name' => 'frontend'))->start();

      if (!$admin_logged_in)
      {
         die('No access!');
      }
   }
}
Sander Mangel
quelle
Funktioniert das, @sander? Ich hatte gemischte Ergebnisse mit dem Versuch, die Adminhtml-Sitzung zu starten und sie dann in der Ursprungssitzung wiederherzustellen ...
Philwinkle
Ich habe so etwas in einem 1.5 Store. Ich teste gerade am 1.8 :)
Sander Mangel
1
Ich habe den Code aktualisiert, dies ist auf Magento 1.8.0.0 getestet
Sander Mangel