Kali ini kita akan belajar membuat cms dengan menggunakan framework laravel. Pada saat kami membuat projek ini, versi laravel sudah pada versi 9.0. Sehinga pada projek kali ini saya menggunakan versi laravel yang terbaru untuk Tutorial Belajar Bikin CMS Dengan laravel 9 kali ini.
Persiapan Yang harus di lakukkan
1. Install Webserver ( XAMPP )
2. Visual Studio Code
3. Install Composer
Pembuatan Projek
Untuk membuat sebuah projek dengan laravel, silahkan gunakan perintah di bawah ini dengan menggunakan vscode terminal atau bisa menggunakan command promt / terminal . Kali ini projek akan di berinama RiffaCMS
composer create-project laravel/laravel RiffaCMS
Setelah anda mengetikan perintah itu, maka akan secara otomatis laravel membuatkan sebuah projek untuk anda dengan folder RiffaCMS, dan didalamnya sudah terdapat file2 laravel yang siap kita kerjakan. Perintah selanjutnya adalah silahkan teman teman masuk dalam folder tersebut dengan perintah
cd RiffaCMS
Setelah anda masuk dalam folder projek silahkan jalankan server dengan mengetikan
php artisan serve
Maka server laravel akan berjalan dengan port tertentu. Silahkan buka url yang di tampilkan dalam terminal, jika url tersebut bisa di akses, maka instalasi laravel teman teman semua sudah berhasil
Pembuat Sistem Login
Kali ini kita akan bahas tentang sistem login nya. Mulai dari database, tampilan dan juga sistem autentikasinya. Mari kita langsung saja kita bahas mulai dari tampilan/layout.
Pembuatan Tampilan
Untuk membuat sistem login , kita akan membuat sebuah modul bernama ui. Untuk menginstallnya silahkan teman teman mengetikan perintah dibawah ini
composer require laravel/ui
Setelah itu kita install auth yang ada di dalam ui dengan perintah
php artisan ui --auth
Atau bisa dengan menambahkan bootstrap jika teman teman ingin langsung memberikan style dengan bootsrap yang sudah disediakan ui
php artisan ui bootstrap --auth
Kali ini kita akan menggunakan yang kedua ( menggunakan bootsrap). Dan jika menggunakan boostrap rekan rekan harus menginstall nodejs , karena kita akan menjalankan peintah node js dengan perintah dibawah ini.
npm install
Kemudian dilanjutkan dengan
npm run dev
Pembuatan Database
Silahkan teman teman semua persiapkan databasenya. kali ini kita akan menggunakan mysql, jadi silahkan teman teman semuanya buka di “http://localhost/phpmyadmin/” jika menggunakan xampp seperti saya. Dan silahkan bikin database, dan juga user besarta passwordnya. Setelah itu silhakn masuk di file .env untuk pengaturan database. Atur DB_DATABASE , DB_USERNAME dan DB_PASSWORD sesuai dengan yang teman teman bikin di php myadmin
Sekarang kita coba membuat sebuah table dan kita coba untuk mengisi table user tersebut untuk default user.
Tambahkan field user yang letaknya di database/migrations/…_create_users_table.php
Silahkan tambahkan
$table- > string('username')- > unique();
Sehingga seluruh field seharusnya menjadi seperti ini
$table- > id(); $table- > string('username')- > unique(); $table- > string('name'); $table- > string('email')- > unique(); $table- > timestamp('email_verified_at')- > nullable(); $table- > string('password'); $table- > rememberToken(); $table- > timestamps();
Setelah itu ketikan perintah
php artisan migrate
Dengan perintah tersebut maka akan terbentuk sebuah table , dan diantaranya adalah table user.
Setup File
Setelah database terbentuk,kita kan mengkonfigurasi file untuk menambahkan field user, karena tadi kita menambahkan user pada table.
Tambahkan pengaturan user yang letaknya di \app\Http\Controllers\Auth\RegisterController.php
Pada Fungsi validator tambahkan
'username' => ['required', 'string', 'max:255', 'unique:users'],
Pada fungsi Create tambahkan juga
'username' => $data['username'],
Kemudian di \app\Models\User.php tambahkan field user
protected $fillable = [ 'username', 'name', 'email', 'password', ];
Tambahkan field untuk usernya di \resources\views\auth\register.blade.php
<div class="row mb-3"> <label for="username" class="col-md-4 col-form-label text-md-end">{{ __('User') }}< / label> <div class="col-md-6"> <input id="username" type="text" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus> @error('username') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}< / strong> < / span> @enderror < / div> < / div>
Setelah itu lakukan register melalui form yang di sediakan oleh laravel ui. Setelah anda memiliki user, anda bisa disable user dengan menambahkan configurasi pada file \web.php dan edit untuk Auto::routes nya menjadi
Auth::routes([ 'register' = > false ]);
Agar bisa login dengan username, maka kita juga perlu mengubah file \resources\views\auth\login.blade.php . Setelah itu ganti email menjadi username.
<div class="row mb-3"> <label for="username" class="col-md-4 col-form-label text-md-end">{{ __('Email Address / username ') }}< / label> <div class="col-md-6"> <input id="username" type="username" class="form-control @error('username') is-invalid @enderror" name="username" value="{{ old('username') }}" required autocomplete="username" autofocus> @error('username') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}< / strong> < / span> @enderror < / div> < / div>
Setelah selesai mengedit file diatas, maka silahkan tambahkan method username pada file \app\Http\Controllers\Auth\LoginController.php .
Code dari method username bisa anda lihat di bawah ini
public function username() { return 'username'; }
Setelah itu jalankan server laravel anda dengan php artisan serve , dan coba login dengan username. Maka jika berhasil , maka anda sudah selesai merubah metode login dengan email menjadi username.
Kemudian bagaiman jika anda ingin menggunakan login dengan kedua duanya. Atau anda bisa login dengan username maupun dengan email?. Silahkan ganti method username menjadi 2 method berikut ini
protected function sendFailedLoginResponse(Request $request) { throw ValidationException::withMessages([ 'username' => [trans('auth.failed')], ]); } public function username() { $login = request()->input('username'); $field = filter_var($login, FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; request()->merge([$field => $login]); return $field; }