Nach der Administratoranmeldung zur vorherigen URL umleiten

9

Ich möchte, dass Administratorbenutzer zu der URL umgeleitet werden, die sie nach der Anmeldung geöffnet haben. Sie sollten Links zu einer benutzerdefinierten Modulseite im Admin- Bereich erhalten, wie z

https: //magento.example/index.php/admin/admin_mycoolmodule/adminhtml_viewawesome/view/showpage/awesome/howmuch/9001/

Offensichtlich werden sie auf die Anmeldeseite umgeleitet, sofern sie nicht bereits angemeldet sind.

Wie kann ich sie nach dem Login zurück auf diese Seite leiten?

Geheime Schlüssel in der URL sind deaktiviert und können dies auch bleiben.

Jetzt erhalten sie stattdessen die konfigurierte Standardseite (Standard war Dashboard).

Josef sagt Reinstate Monica
quelle
OK, im Grunde möchten Sie den Administrator umleiten, um nach dem Anmelden zu Ihrer benutzerdefinierten Seite anstatt zum Dashboard umzuleiten, oder?
amit_game
Nein, das wäre nur eine Einstellung. Ich möchte, dass es zu der URL umleitet, die vor der Anmeldung geöffnet war.
Josef sagt Reinstate Monica
Ich glaube nicht, dass Sie dies sofort tun können. Sie müssen eine Anpassung
vornehmen
1
Ist dies nicht das Standardverhalten in Magento? Wenn Sie versuchen, zu einer Administrationsseite zu wechseln, werden Sie zur Anmeldeseite weitergeleitet. Nach einer erfolgreichen Anmeldung kehren Sie zu dieser Seite und nicht zum Dashboard zurück.
Javier Villanueva
1
Dies ist das Standardverhalten für das Frontend. Für das Backend gelangen Sie zum Dashboard. Vielleicht könnten Sie es replizieren. Die gesamte Implementierung erfolgt in code / core / Mage / Customer / controller / AccountController.php. Suchen Sie nach getBeforeAuthUrl und setBeforeAuthUrl. Jedenfalls ist es kein 5-Minuten-Job.
Samuel Coman

Antworten:

1

Wie in allen Kommentaren bereits erwähnt, ist es nicht sofort einsatzbereit. Hier sind einige Hinweise, wo / was Sie möglicherweise anpassen müssen:

Mage_Admin_Model_User

public function getStartupPageUrl()
    {
        $startupPage = Mage::getStoreConfig(self::XML_PATH_STARTUP_PAGE);
        $aclResource = 'admin/' . $startupPage;
        if (Mage::getSingleton('admin/session')->isAllowed($aclResource)) {
            $nodePath = 'menu/' . join('/children/', explode('/', $startupPage)) . '/action';
            $url = (string)Mage::getSingleton('admin/config')->getAdminhtmlConfig()->getNode($nodePath);
            if ($url) {
                return $url;
            }
        }
        return $this->findFirstAvailableMenu();
    }

Ich habe es nie versucht, aber dies scheint die Methode zu sein, von der aus aufgerufen wird

Mage_Adminhtml_IndexController

und es gibt die IndexAction, die die obige Funktion aufruft. Da dies der Administrator ist, wird es wahrscheinlich einfacher sein, das Modell neu zu schreiben.

/**
 * Admin area entry point
 * Always redirects to the startup page url
 */
public function indexAction()
{
    $session = Mage::getSingleton('admin/session');
    $url = $session->getUser()->getStartupPageUrl();
    if ($session->isFirstPageAfterLogin()) {
        // retain the "first page after login" value in session (before redirect)
        $session->setIsFirstPageAfterLogin(true);
    }
    $this->_redirect($url);
}

Wenn Sie also getStartupPageUrl () so ändern, dass Ihre URL angezeigt wird, ist dies höchstwahrscheinlich der beste Ort, um dies zu versuchen.

Das ist alles theoretisch, ich habe es noch nicht ausprobiert, aber wenn Sie ein Beispielmodul benötigen, kann ich es auf jeden Fall durchgehen und bereitstellen.

Wenn jeder Administrator auf derselben Seite landet, ist dies ziemlich einfach. Wenn einige dynamische Elemente vorhanden sind, ist es etwas schwieriger, dies zu vereinfachen. Viel Glück!

RussellAlbin
quelle