Persiapan
Register
Login
Dashboard
Logout
Jika proses installasi sudah selesai, sekarang kita bisa menjalankan project
Laravelnya. Silahkan jalankan perintah di bawah ini :
cd livewire-auth
Di atas kita buat untuk nama database yang akan kita gunakan
adalah db_livewire_auth dan untuk password silahkan disesuaikan dengan
konfigurasi dari MySQL masing-masing. Jika menggunakan XAMPP secara
default adalah kosong atau tidak perlu diisi.
CATATAN : Jika kita melakukan perubahan di dalam file .env maka kita harus
melakukan restart server laravel untuk memastikan perubahan yang
dilakukan.
Secara default ketika kita menginstall Laravel, maka kita sudah di sediakan
migration untuk table users dan Model User, jadi kita tidak perlu susah payah
membuatnya dari awal. Sekarang kita akan menjalankan migration untuk
men-generate migration tersebut menjadi sebuah table di dalam database.
Halo teman-teman semuanya, pada kesempatan kali ini kita akan belajar
bagaimana cara installasi Livewire di dalam project laravel kita. Livewire
merupakan Full-Stack Framework untuk Laravel, dengan Livewire kita bisa
membuat website modern tanpa harus menggunakan JavaScript dan kita bisa
fokus dengan kode Back-End.
<script>
@if(session()->has('success'))
toastr.success('{{ session('success') }}')
@elseif(session()->has('error'))
toastr.error('{{ session('error') }}')
@endif
</script>
</body>
</html>
Kemudian untuk kode berikut ini. digunakan untuk menampilkan content dari
project kita.
@yield('content')
Halo teman-teman semuanya, pada kesempatan kali ini kita akan belajar
untuk menginstall Turbolinks di dalam project laravel Livewire
kita. Turbolinks di gunakan untuk membuat project kita menjadi SPA (Single
Page Application) atau berpindah-pindah halaman tanpa harus melakukan
sebuah reload page. Dan untuk Installasi dan konfigurasi di dalam Livewire ini
sangat mudah dan simple sekali, langsung saja kita mulai.
Langkah 1 - Installasi Node Js
Jika perintah di atas keluar versi dari Node Js dan NPM, maka kita sudah
berhasil menginstall Node Jd di dalam komputer kita.
Silahkan masuk ke dalam folder project kita dan jalankan perintah di bawah
ini :
npm install
npm install turbolinks
Silahkan di tunggu proses bundling atau coompiling dari semua file JavaScript
di dalam project Laravel kita. Kemudian untuk menggunkan kita bisa panggil
file app.js di dalam layouts project kita.
Halo teman-teman semuanya, sekarang kita akan belajar membuat proses
register dengan Laravel dan Livewire. Jika di Laravel untuk membuat logic
application ada di dalam controller, maka di Livewire kita tidak akan
menggunakan controller lagi melainkan component. Keuntungan
menggunakan component salah satunya adalah reusable, yaitu bisa
digunakan berulang kali tanpa harus menuliskannya lagi.
//register
Route::livewire('/register', 'auth.register')
->layout('layouts.app')->name('auth.register');
});
Di atas untuk route register kita taruh di dalam middleware guest dan jika kita
perhatikan lagi untuk route register akan menggunakan layouts yang
bernama app.blade.php yang berada di dalam folder resources/layouts.
->layout('layouts.app')
Pertama kita akan membuat fungsi register di dalam class Register, silahkan
buka file app/Http/Livewire/Auth/Register.php kemudian ubah kodenya menjadi
seperti berikut ini :
<?php
namespace App\Http\Livewire\Auth;
use App\User;
use Livewire\Component;
/**
* store
*
* @return void
*/
public function store()
{
$this->validate([
'name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|confirmed'
]);
$user = User::create([
'name' => $this->name,
'email' => $this->email,
'password' => bcrypt($this->password)
]);
if($user) {
session()->flash('success', 'Register Berhasil!.');
return redirect()->route('auth.login');
}
}
/**
* render
*
* @return void
*/
public function render()
{
return view('livewire.auth.register');
}
}
Kemudian kita membuat sebuah kondisi, jika data user berhasil di simpan ke
dalam database maka akan menampilkan pesan sukses dan di arahkan ke
dalam route yang bernama auth.login
if($user) {
session()->flash('success', 'Register Berhasil!.');
return redirect()->route('auth.login');
}
Setelah kita berhasil membuat fungsi untuk register, sekarang kita lanjutkan
untuk membuat halaman viewnya. Silahkan buka
file resources/views/livewire/auth/register.blade.php dan ubah kodenya menjadi
seperti berikut ini :
<div>
<div class="container" style="margin-top: 120px">
<div class="row justify-content-center">
<div class="col-md-6">
<div class="card border-0 rounded shadow">
<div class="card-body">
<h5 class="text-center"> <i class="fa fa-user-plus"></i>
REGISTER</h5>
<hr>
<form wire:submit.prevent="store">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="font-weight-bold">NAMA
LENGKAP</label>
<input type="text" wire:model.lazy="name"
class="form-control @error('name') is-invalid @enderror"
placeholder="Nama lengkap">
@error('name')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="font-weight-bold">ALAMAT
EMAIL</label>
<input type="text" wire:model.lazy="email"
class="form-control @error('email') is-invalid @enderror"
placeholder="Alamat Email">
@error('email')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="font-weight-
bold">PASSWORD</label>
<input type="password"
wire:model.lazy="password"
class="form-control @error('password')
is-invalid @enderror" placeholder="Password">
@error('password')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="font-weight-bold">KONFIRMASI
PASSWORD</label>
<input type="password"
wire:model.lazy="password_confirmation"
class="form-control"
placeholder="Konfirmasi Password">
</div>
</div>
</div>
<button type="submit" class="btn btn-primary btn-
block">REGISTER</button>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
Jika teman-teman perhatikan di atas untuk action dari form kita arahkan ke
dalam function store yang berada di dalam component register menggunakan
directive wire:submit.
<form wire:submit.prevent="store">
Di atas sebenarnya kita sudah berhasil membuat fungsi register, error di atas
muncul karena kita belum memiliki route yang bernama auth.login, di artikel
selanjutnya kita akan membuat component untuk login.
Halo teman-teman semuanya, setelah sebelumnya kita sudah berhasil
membuat fungsi register, sekarang kita lanjutkan untuk membuat fungsi login
di dalam project Laravel Livewire kita. Langsung saja kita mulai.
//register
Route::livewire('/register', 'auth.register')
->layout('layouts.app')->name('auth.register');
//login
Route::livewire('/login', 'auth.login')
->layout('layouts.app')->name('auth.login');
});
namespace App\Http\Livewire\Auth;
use Livewire\Component;
use Illuminate\Support\Facades\Auth;
/**
* login
*
* @return void
*/
public function login()
{
$this->validate([
'email' => 'required|email',
'password' => 'required'
]);
return redirect()->route('admin.dashboard');
} else {
session()->flash('error', 'Alamat Email atau Password Anda salah!.');
return redirect()->route('auth.login');
}
}
/**
* render
*
* @return void
*/
public function render()
{
return view('livewire.auth.login');
}
}
Pertama kita import Facades Auth dari Laravel, ini akan kita gunakan untuk
proses Authentication dengan memanggil method attempt.
use Illuminate\Support\Facades\Auth;
Jika proses Authentication berhasil kita akan di arahkan kesebuah route yang
bernama admin.dashboard, akan tetapi jika proses Authentication gagal maka
akan di arahkan ke route yang bernama auth.login dengan membawa pesan
error.
if(Auth::attempt(['email' => $this->email, 'password'=> $this->password])) {
return redirect()->route('admin.dashboard');
} else {
<div class="form-group">
<label class="font-weight-bold">ALAMAT EMAIL</label>
<input type="text" wire:model.lazy="email"
class="form-control @error('email') is-invalid
@enderror"
placeholder="Alamat Email">
@error('email')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label class="font-weight-bold">PASSWORD</label>
<input type="password" wire:model.lazy="password"
class="form-control @error('password') is-invalid
@enderror" placeholder="Password">
@error('password')
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
Di atas untuk action dari form kita arahkan ke function login yang berada di
dalam component Login menggunakan directive wire:submit.
<form wire:submit.prevent="login">
Dan sekarang kita coba untuk data yang ada di dalam database, maka kurang
lebih kita akan mendapatkan tampilan seperti berikut ini :
Di atas kita sebenarnya sudah berhasil melakukan Authentication, error di
atas muncul karena kita belum membuat route dengan nama admin.dashboard.
Di artikel selanjutnya kita akan belajar untuk membuat halaman Dashboard.
Halo teman-teman semuanya, setelah sebelumnya kita sudah berhasil
membuat proses Authentication dengan Laravel dan Livewire, sekarang kita
lanjutkan untuk membuat halaman Dashboard.
//dashboard
Route::livewire('/admin/dashboard', 'admin.dashboard')
->layout('layouts.app')->name('admin.dashboard');
});
Halo teman-teman semuanya, sebelumnya kita sudah berhasil membuat
proses Authentication dan halaman Dashboard, maka sekarang kita lanjutkan
untuk membuat proses Logout.
Disini kita akan membuat component dan component tersebut kita panggil di
view pada halaman dashboard. Langsung saja kita mulai.
namespace App\Http\Livewire\Admin;
use Livewire\Component;
use Illuminate\Support\Facades\Auth;
Pertama kita import Facades Auth terlebih dahulu dari Laravel, ini akan kita
gunakan untuk proses Logout.
use Illuminate\Support\Facades\Auth;
Auth::logout();
Sekarang kita lanjutkan untuk membuat viuew untuk proses Logout, silahkan
buka file resources/views/livewire/admin/logout.blade.php kemudian ubah kodenya
menjadi seperti berikut ini :
<div>
<a wire:click="logout" class="list-group-item active" style="cursor:
pointer">LOGOUT <i class="fas fa-sign-out-alt"></i></a>
</div>
Kode di atas kita gunakan untuk memanggil component logout di dalam view
dashboard. Sekarang kita bisa mencoba menjalankan proses Logout di dalma
project kita.