Redireccionar a URL anterior después de iniciar sesión como administrador


9

Quiero que los usuarios administradores sean redirigidos a la URL que abrieron después de iniciar sesión. Deben obtener enlaces a una página de módulo personalizado en el área de administración , como

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

Obviamente, serán redirigidos a la página de inicio de sesión, a menos que ya hayan iniciado sesión.

¿Cómo puedo redirigirlos a esta página después de iniciar sesión?

Las claves secretas en la URL están deshabilitadas y pueden permanecer así.

Ahora obtienen la página predeterminada configurada (en su lugar, Dashboard).


ok, básicamente quieres redirigir al administrador para que redirija a tu página personalizada en lugar del tablero, después de iniciar sesión, ¿verdad?
amit_game

No, eso sería solo un escenario. Quiero que redirija a cualquier URL que esté abierta antes de iniciar sesión.
Josef dice Restablecer a Mónica

No creo que puedas hacer esto fuera de la caja. Tendrá que hacer una personalización
brentwpeterson

1
¿No es este el comportamiento predeterminado en Magento? Si intenta ir a una página de administrador, será redirigido a la página de inicio de sesión y, después de un inicio de sesión exitoso, volverá a esa página, no al panel de control.
Javier Villanueva

1
Es el comportamiento predeterminado para el frontend. Para el backend te lleva al Tablero. Tal vez podrías replicarlo. Toda la implementación se realiza en code / core / Mage / Customer / controllers / AccountController.php. Busque getBeforeAuthUrl y setBeforeAuthUrl. De todos modos, no es un trabajo de 5 minutos.
Samuel Coman

Respuestas:


1

Como todos los comentarios declararon antes, no está listo para usar. Aquí hay algunos consejos sobre dónde / qué puede necesitar 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();
    }

Nunca lo he intentado, pero este parece ser el método llamado desde

Mage_Adminhtml_IndexController

y existe la IndexAction que llama a la función anterior. Dado que este es el administrador, hacer una reescritura del Modelo probablemente será más 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);
}

Por lo tanto, modificar getStartupPageUrl () para que tenga su URL parece muy probable que sea el mejor lugar para probar esto.

Todo esto es teórico, aún no lo he probado, pero si necesita un módulo de muestra, ciertamente puedo ejecutarlo y proporcionarlo.

Si cada usuario administrador terminará en la misma página, es bastante fácil de hacer, si hay algunos elementos dinámicos, será un poco más difícil de facilitar. ¡Buena suerte!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.