Przekieruj do poprzedniego adresu URL po zalogowaniu administratora

9

Chcę, aby użytkownicy administracyjni zostali przekierowani na adres URL, który otworzyli po zalogowaniu. Powinny uzyskać linki do niestandardowej strony modułu w obszarze administracyjnym , np

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

Oczywiście zostaną przekierowani na stronę logowania, chyba że są już zalogowani.

Jak mogę przekierować je z powrotem na tę stronę po zalogowaniu?

Tajne klucze w adresie URL są wyłączone i mogą zostać w ten sposób.

Teraz otrzymują skonfigurowaną domyślną stronę (domyślnie był to Dashboard).

Josef mówi Przywróć Monikę
źródło
ok, po prostu chcesz przekierować administratora, aby przekierował na twoją niestandardową stronę zamiast pulpitu nawigacyjnego, po zalogowaniu, prawda?
amit_game
Nie, to tylko ustawienie. Chcę, aby przekierowywał na dowolny adres URL, który był otwarty przed zalogowaniem.
Josef mówi Przywróć Monikę
Nie sądzę, że możesz to zrobić po wyjęciu z pudełka. Konieczne będzie dostosowanie
brentwpeterson
1
Czy to nie jest domyślne zachowanie w Magento? Jeśli spróbujesz przejść na stronę administratora, zostaniesz przekierowany na stronę logowania, a po udanym zalogowaniu powrócisz do tej strony, a nie do pulpitu nawigacyjnego.
Javier Villanueva
1
Jest to domyślne zachowanie interfejsu użytkownika. W przypadku backendu zabierze Cię do pulpitu nawigacyjnego. Może mógłbyś to powtórzyć. Cała implementacja odbywa się w kodzie / core / Mage / Customer / kontrolers / AccountController.php. Poszukaj getBeforeAuthUrl i setBeforeAuthUrl. W każdym razie to nie jest 5 minutowa praca.
Samuel Coman,

Odpowiedzi:

1

Jak wszystkie wcześniejsze komentarze, nie jest to niemożliwe. Oto kilka wskazówek na temat tego, gdzie / co może być konieczne do dostosowania:

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

Nigdy tego nie próbowałem, ale wydaje się, że jest to metoda wywoływana z

Mage_Adminhtml_IndexController

i istnieje funkcja IndexAction, która wywołuje powyższą funkcję. Ponieważ jest to administrator, przepisanie modelu będzie prawdopodobnie łatwiejsze.

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

Zatem modyfikacja getStartupPageUrl () w celu uzyskania adresu URL wydaje się być najlepszym miejscem do wypróbowania tego.

To wszystko jest teoretyczne, jeszcze go nie wypróbowałem, ale jeśli potrzebujesz przykładowego modułu, z pewnością mogę go przejrzeć i dostarczyć.

Jeśli każdy administrator znajdzie się na tej samej stronie, jest to dość łatwe, jeśli są jakieś dynamiczne elementy, będzie to nieco trudniejsze. Powodzenia!

RussellAlbin
źródło