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.