My Course — Membangun Website Food Store Dengan Laravel Filament, Livewire dan Payment Gateway

Membuat Pengecekan Kondisi Login


Method mount merupakan method yang akan dijalankan pertama kali saat class component diakses. Dan sekarang kita akan menambahka method tersebut pada component register dan login untuk pengecekan status login.

Jadi jika customer sudah login dan mengakses halaman register atau login, maka akan dipaksa redirect ke halaman My Orders.

Langkah 1 - Menambahkan di Class Component Register

Silahkan teman-teman buka file app/Livewire/Auth/Register.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.

php
<?php namespace App\Livewire\Auth; use Livewire\Component; use App\Models\Customer; class Register extends Component { public $name; public $email; public $password; public $password_confirmation; /** * rules * * @return void */ public function rules() { return [ 'name' => ['required'], 'email' => ['required', 'email', 'unique:customers,email'], 'password' => ['required', 'confirmed'], ]; } /** * mount * * @return void */ public function mount() { // redirect if user is already logged in if(auth()->guard('customer')->check()) { return $this->redirect('/account/my-orders', navigate: true); } } /** * register * * @return void */ public function register() { //validate $this->validate(); //create customer Customer::create([ 'name' => $this->name, 'email' => $this->email, 'password' => bcrypt($this->password), ]); //session flash session()->flash('success', 'Register Berhasil, silahkan login'); //redirect return $this->redirect('/login', navigate: true); } public function render() { return view('livewire.auth.register'); } }

Di atas, kita menambahkan method baru dengan nama mount.

csharp
public function mount() { //... }

Di dalamnya, kita melakukan pengecekan status login dari customer, jika bernilai true maka akan kita redirect ke halaman My Orders.

scss
// redirect if user is already logged in if(auth()->guard('customer')->check()) { return $this->redirect('/account/my-orders', navigate: true); }

Langkah 2 - Menambahkan di Class Component Login

Sama seperti di atas, kita juga akan menambahkan method mount di dalam class component login. Silahkan teman-teman buka file app/Livewire/Auth/Login.php, kemudian ubah semua kode-nya menjadi seperti berikut ini.

php
<?php namespace App\Livewire\Auth; use Livewire\Component; class Login extends Component { public $email; public $password; /** * rules * * @return void */ protected function rules() { return [ 'email' => ['required', 'email'], 'password' => ['required'], ]; } /** * mount * * @return void */ public function mount() { // redirect if user is already logged in if(auth()->guard('customer')->check()) { return $this->redirect('/account/my-orders', navigate: true); } } /** * login * * @return void */ public function login() { // validate the input $this->validate(); // attempt to login if (auth()->guard('customer')->attempt([ 'email' => $this->email, 'password' => $this->password, ])) { // session flash session()->flash('success', 'Login Berhasil'); // redirect to the desired page return $this->redirect('/account/my-orders', navigate: true); } // flash error message if login fails session()->flash('error', 'Periksa email dan password Anda.'); // redirect to the desired page return $this->redirect('/login', navigate: true); } public function render() { return view('livewire.auth.login'); } }

Untuk penjelasannya sama seperti yang ada pada class component register di atas.