Pada PHPMaker versi 2024, kita bisa menulis kode sederhana berikut di server event User_LoggedIn untuk me-redirect Pengguna nancy setelah berhasil login, ke halaman List table orders:
if ($usr == "nancy") {
$this->terminate("orderslist");
}
Hal itu bisa terjadi karena pada versi 2024, kode yang kita tulis pada server event User_LoggedIn akan ditempatkan pada file hasil generate models/Login.php.
Tapi sayangnya, kode tersebut tidak dapat kita gunakan pada server event yang sama pada PHPMaker 2025. Penyebabnya, karena server event User_LoggedIn tersebut tidak akan ditempatkan lagi pada file models/Login.php lagi di PHPMaker 2025, tapi akan berada ke dalam file hasil generate: src/AuthenticationEventSubscriber.php.
Sebagai solusinya, maka kita harus menulis kode masing-masing pada server event User_CustomValidate yang terdapat di bawah Server Events -> Global -> All Pages, dan server event Page_Load yang terdapat di bawah Server Events -> Other -> Login.
Kode selengkapnya pada server event User_CustomValidate (cek hasilnya pada file yang di-generate oleh PHPMaker: src/AdvancedSecurity.php):
// User Custom Validate event
function User_CustomValidate(string &$userName): bool
{
// Enter your custom code to validate user, return true if valid.
if ($userName == "nancy") {
FlashBag()->add("MyRedirectUrl", "orderslist");
}
return false;
}
Kode selengkapnya pada server event Page_Load (cek hasilnya pada file yang di-generate oleh PHPMaker: models/Login.php):
// Page Load event
function Page_Load(): void
{
$url = FlashBag()->get("MyRedirectUrl")[0] ?? "";
if ($url) {
$this->terminate($url);
}
}
Penting untuk diingat, bahwa kode yang kita tulis di dalam server event User_CustomValidate di atas, tidak akan berfungsi jika kita pindahkan ke server event User_LoggedIn. Mengapa? Karena dalam hal ini kode pada server event Page_Load akan duluan dieksekusi daripada kode pada server event User_LoggedIn.
Jadi, mulai sekarang, biasakanlah untuk menulis kode pada server event User_CustomValidate jika kita ingin melakukan validasi secara kostum terhadap user yang akan login, dan setelah itu, gunakan object FlashBag untuk menentukan URL yang akan dituju, lalu cek dan redirect menggunakan method terminate pada server event Page_Load di halaman Login.
Nah, di sinilah salah satu keuntungan jika kita menggunakan PHPMaker versi 2025 dibandingkan versi-versi major terdahulu. Kita bisa bebas menggunakan object FlashBag tadi dari bagian manapun di server event yang tersedia di PHPMaker, asalkan syarat dan ketentuannya terpenuhi.
Dengan cara yang hampir sama dengan kode di server event User_CustomValidate tadi, maka kita dengan mudahnya dapat menampilkan pesan sukses pada server event tersebut. Cukup tambahkan kode berikut:
FlashBag()->add("success", "Welcome, nancy! You have successfully been redirected to Orders List page.");
sesudah baris kode yang ini:
FlashBag()->add("MyRedirectUrl", "orderslist");
Semakin keren aja nih, si PHPMaker! 😀
Tinggalkan Balasan