Rediriger vers l'URL précédente après la connexion administrateur


9

Je souhaite que les utilisateurs administrateurs soient redirigés vers l'URL qu'ils ont ouverte après la connexion. Ils devraient obtenir des liens vers une page de module personnalisée dans la zone d' administration , comme

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

De toute évidence, ils seront redirigés vers la page de connexion, sauf s'ils sont déjà connectés.

Comment puis-je les rediriger vers cette page après la connexion?

Les clés secrètes de l'URL sont désactivées et peuvent le rester.

Maintenant, ils obtiennent à la place la page par défaut configurée (la valeur par défaut était Dashboard).


ok, fondamentalement, vous voulez rediriger l'administrateur pour rediriger vers votre page personnalisée au lieu du tableau de bord, après la connexion, non?
amit_game

Non, ce ne serait qu'un paramètre. Je veux qu'il redirige vers l'URL ouverte avant la connexion.
Josef dit Réintégrer Monica le

Je ne pense pas que vous puissiez faire cela hors de la boîte. Vous devrez faire une personnalisation
brentwpeterson

1
N'est-ce pas le comportement par défaut dans Magento? Si vous essayez d'accéder à une page d'administration, vous êtes redirigé vers la page de connexion et après une connexion réussie, vous revenez à cette page et non au tableau de bord.
Javier Villanueva

1
Il s'agit du comportement par défaut du frontend. Pour le backend, vous accédez au tableau de bord. Vous pourriez peut-être le reproduire. L'ensemble de l'implémentation se fait dans code / core / Mage / Customer / controllers / AccountController.php. Recherchez getBeforeAuthUrl et setBeforeAuthUrl. Quoi qu'il en soit, ce n'est pas un travail de 5 minutes.
Samuel Coman

Réponses:


1

Comme tous les commentaires mentionnés précédemment, ce n'est pas prêt à l'emploi. Voici quelques conseils sur où / ce que vous pourriez avoir besoin d'ajuster:

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();
    }

Je ne l'ai jamais essayé mais cela semble être la méthode appelée depuis

Mage_Adminhtml_IndexController

et il y a l'IndexAction qui appelle la fonction ci-dessus. Puisque c'est l'administrateur, faire une réécriture du modèle sera probablement plus facile.

/**
 * 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);
}

Donc, modifier getStartupPageUrl () pour avoir votre URL semble très probablement le meilleur endroit pour essayer cela.

Tout cela est théorique, je ne l'ai pas encore essayé, mais si vous avez besoin d'un exemple de module, je peux certainement le parcourir et le fournir.

Si chaque utilisateur administrateur se retrouve sur la même page, c'est assez facile à faire, s'il y a des éléments dynamiques, ce sera un peu plus difficile à faciliter. Bonne chance!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.