Redirect ke URL sebelumnya setelah login admin

9

Saya ingin pengguna admin dialihkan ke url yang mereka buka setelah masuk. Mereka harus mendapatkan tautan ke halaman modul khusus di area admin , seperti

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

Jelas, mereka akan diarahkan ke halaman login, kecuali mereka sudah masuk.

Bagaimana saya bisa mengarahkan mereka kembali ke halaman ini setelah login?

Kunci rahasia di URL dinonaktifkan dan dapat tetap seperti itu.

Sekarang mereka mendapatkan halaman default yang dikonfigurasi (default adalah Dashboard) sebagai gantinya.

Josef berkata Reinstate Monica
sumber
ok, pada dasarnya Anda ingin mengarahkan admin untuk mengalihkan ke halaman khusus Anda alih-alih dasbor, setelah login, kan?
amit_game
Tidak, itu hanya akan menjadi pengaturan. Saya ingin mengarahkan ulang ke URL apa pun yang dibuka sebelum masuk.
Josef berkata Reinstate Monica
Saya tidak berpikir Anda bisa melakukan ini di luar kotak. Anda harus membuat penyesuaian
brentwpeterson
1
Bukankah ini perilaku default di Magento? Jika Anda mencoba membuka halaman admin, Anda akan diarahkan ke halaman login dan setelah login berhasil, Anda kembali ke halaman itu bukan dashboard.
Javier Villanueva
1
Ini adalah perilaku default untuk frontend. Untuk backend Anda akan dibawa ke Dasbor. Mungkin Anda bisa meniru itu. Seluruh implementasi dilakukan dalam kode / core / Mage / Pelanggan / pengendali / AccountController.php. Cari getBeforeAuthUrl dan setBeforeAuthUrl. Bagaimanapun, ini bukan pekerjaan 5 menit.
Samuel Coman

Jawaban:

1

Seperti semua komentar yang dinyatakan sebelumnya, itu tidak keluar dari kotak. Berikut adalah beberapa petunjuk tentang di mana / apa yang perlu Anda sesuaikan:

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

Saya belum pernah mencobanya tetapi ini sepertinya metode yang dipanggil

Mage_Adminhtml_IndexController

dan ada IndexAction yang memanggil fungsi di atas. Karena ini adalah admin, melakukan penulisan ulang Model mungkin akan lebih mudah.

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

Jadi, memodifikasi getStartupPageUrl () untuk membuat URL Anda tampaknya merupakan tempat terbaik untuk mencoba ini.

Ini semua teoretis, saya belum mencobanya, tetapi jika Anda memerlukan modul sampel, saya pasti dapat menjalankan ini dan menyediakannya.

Jika setiap pengguna admin akan berakhir di halaman yang sama, itu cukup mudah dilakukan, jika ada beberapa elemen dinamis, itu akan sedikit lebih sulit untuk difasilitasi. Semoga berhasil!

RussellAlbin
sumber