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


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!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.