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