Redirecionar para o URL anterior após o login do administrador


9

Desejo que os usuários administradores sejam redirecionados para o URL que eles abriram após o login. Eles devem obter links para uma página de módulo personalizada na área de administração , como

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

Obviamente, eles serão redirecionados para a página de login, a menos que já estejam logados.

Como redirecioná-los para esta página após o login?

As chaves secretas no URL estão desativadas e podem permanecer assim.

Agora eles obtêm a página padrão configurada (o padrão era Painel).


ok, basicamente você deseja redirecionar o administrador para redirecionar para sua página personalizada em vez do painel, após o login, certo?
— Amit_game #

Não, isso seria apenas um cenário. Quero que ele seja redirecionado para qualquer URL que tenha sido aberta antes do login.
— Josef diz Reinstate Monica

Eu não acho que você pode fazer isso imediatamente. Você vai precisar fazer uma personalização
— brentwpeterson

11
Este não é o comportamento padrão no Magento? Se você tentar acessar uma página de administrador, será redirecionado para a página de login e, após um login bem-sucedido, retorne à página e não ao painel.
— Javier Villanueva

11
É o comportamento padrão para o frontend. Para o back-end, você é levado ao Painel. Talvez você possa replicá-lo. Toda a implementação é feita em code / core / Mage / Customer / controllers / AccountController.php. Procure os getBeforeAuthUrl e setBeforeAuthUrl. Enfim, não é um trabalho de 5 minutos.
— Samuel Coman

Respostas:


1

Como todos os comentários declarados antes, não está fora da caixa. Aqui estão algumas dicas sobre onde / o que você pode precisar ajustar:

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

Eu nunca tentei, mas este parece ser o método chamado de

Mage_Adminhtml_IndexController

e há o IndexAction que chama a função acima. Como esse é o administrador, a reescrita do Modelo provavelmente será mais fácil.

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

Portanto, modificar getStartupPageUrl () para que seu URL pareça muito provavelmente o melhor lugar para tentar isso.

Tudo isso é teórico, eu ainda não tentei, mas se você precisar de um módulo de amostra, certamente posso executar isso e fornecê-lo.

Se todo usuário administrador terminar na mesma página, é muito fácil, se houver alguns elementos dinâmicos, será um pouco mais difícil de facilitar. Boa sorte!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.