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).

Josef diz Restabelecer Monica
fonte
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!

RussellAlbin
fonte