Redirect ke url sebelumnya setelah login. Misal url
order
mengharuskan untuk login, dan form login ditampilkan.
Setelah login, maka otomatis redirect ke halaman sebelumnya yaitu
order
. Bukan ke halaman default home.
Buat filter dengan perintah berikut ini, nama filter bebas
php spark make:filter AuthFilter
Di bagian fungsi before
di file
app/Filters/AuthFilter.php
public function before(RequestInterface $request, $arguments = null)
{
// session logged_in yang di set pada proses login
if (!session()->has('logged_in')) {
// simpan URL saat ini kedalam session
session()->set('redirect_url', current_url());
return redirect('login');
}
}
Tambahkan alias di bagian config app/Config/Filters.php
, nama
alias bebas
public array $aliases = [
// ...
'auth' => \App\Filters\AuthFilter::class,
];
Di bagian app/Config/Routes.php
, tinggal tambahkan filter
auth
atau sesuai dengan nama filter yang ditambahkan di alias
$routes->get('/order', 'Order::index', ['filter' => 'auth']);
Selanjutnya untuk logic di controller, cukup tambahkan kode untuk mengambil
session redirect_url
di bagian login berhasil
// app/Controller/Login.php
// ...
if (password_verify($password, $result['password'])) {
// session logged_in yang digunakan di AuthFilter
$session_data = array(
// ...
'logged_in' => TRUE
);
session()->set($session_data);
// ambil session redirect, jika kosong maka default nya home
$redirectURL = session()->get('redirect_url') ?? 'home';
return redirect()->to($redirectURL);
}
Sekarang untuk setiap route dengan filter auth
, maka akan di
redirect ke URL sebelumnya setelah login
Posting Komentar