
Tutorial Laravel 2025 - Bikin Member Area Dengan Laravel
Halo sobat semua kali ini kita akan belajar tentang laravel. Sebelumnya kita bahas terlebih dahulu apa itu Laravel?
Apa itu Laravel?
Laravel adalah framework PHP open-source yang dirancang untuk pengembangan aplikasi web modern. Dibangun dengan konsep **MVC (Model-View-Controller)**, Laravel menawarkan sintaks yang elegan, fitur siap pakai, dan ekosistem yang lengkap. Beberapa fitur unggulannya meliputi:
- Eloquent ORM: Sistem ORM untuk interaksi database yang intuitif.
- Blade Templating Engine: Template dinamis yang ringan dan mudah digunakan.
- Artisan CLI: Alat command-line untuk otomatisasi tugas pengembangan.
- Routing: Manajemen routing yang fleksibel.
- Middleware: Lapisan keamanan dan filter request.
- Migrations & Seeding: Manajemen struktur database berbasis kode.
Laravel cocok untuk proyek kecil hingga enterprise, berkat skalabilitas dan dokumentasi yang lengkap.
Persiapan Untuk coding dengan laravel
Sebelum instalasi, pastikan sistem memenuhi prasyarat berikut:
1. PHP ≥ 8.1 (versi terbaru direkomendasikan).
2. Composer (dependency manager untuk PHP).
3. Ekstensi PHP yang diperlukan: `OpenSSL`, `PDO`, `Mbstring`, `Tokenizer`, `XML`, `Ctype`, `JSON`, `BCMath`.
4. Web Server(opsional): Laragon, XAMPP, WAMP, atau Laravel Sail (untuk lingkungan Docker).
5. IDE. BIsa menggunakan visual studio
6. Node.js & NPM Untuk menambahkan feature javascript JIka di perlukan
Cara Install Laravel Setelah Semua Persiapan Siap.
Install Laravel
composer global require laravel/installer
laravel new nama-proyek
Atau anda juga install menggunakan langsung auto download
composer create-project laravel/laravel nama-proyek
Process Menambahkan Boostrap
Untuk menambahkan boostrap , kami akan mengguankan laravel ui sebagai kerangkanya. Sebenarnya masih ada banyak lagi yang isa kita gunakan. Seperti laravel Breeze, Jetstream dll. Dengan Laravel ui, kita akan bikin aplikasi lebih simple tanpa menggunakan banyak javascript.
untuk menginstallnya kita bisa menggunakan perintah seperti di bawah ini
composer require laravel/ui
php artisan ui bootstrap --auth
npm install
npm run build
Persiapan Database
Ada beberapa connection yang bisa kita gunakan di di laravel. Diantaranya adalah mysql dan sqlite. Untuk proses develop, biasanya saya menggunakan sqlite karena lebih simple. Untuk menggunakan sqlite, bisa di lakukan configurasi di environment nya yaitu di file .env dengan code dibawah ini
DB_CONNECTION=sqlite
# DB_CONNECTION=mysql
# DB_HOST=127.0.0.1
# DB_PORT=3306
# DB_DATABASE=emaildatabase
# DB_USERNAME=root
# DB_PASSWORD=
Yang di awali dengan tanda #, itu merupakan konfigurasi untuk mysql, dan kami mematikannya, karena saya ganti dengan sqlite.
Setelah itu kita persipakan field di dalam table user. Kita akan menambahkan beberapa kolum untuk penambahan data user pada file database\migrations\*********_create_users_table.php. Setelah itu kita tambahkan field active, untuk menghandle agar tidak setiap user yang register bisa langsung aktif. jadi perlu kita set active terlebih dahulu untuk bisa mengakses dashboard.
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->integer('active')->default(0); #Field Baru
$table->rememberToken();
$table->timestamps();
Setelah table user sudah kita persiapkan untuk datanya, maka kita bisa generate database dan table dengan perintah menggunakan php artisan . Untuk perintahnya , anda bisa gunakan perintah di bawah ini
php artisan migrate
Sampai langkah ini kita sudah berhasil membuat database dan tablenya. Tetapi untuk datanya , kita belum isikan. Jadi kita belum bisa login karena kita belum menambahkan user dan password untuk login ke dalamnya. Jadi langkah selanjutnya adalah membuat default user dan password untuk member area kita.
Untuk itu silahkan langsung buka file database\seeders\DatabaseSeeder.php. kemudian replace semua fungsi run dan ganti dengan code di bawah ini.
public function run(): void
{
$newUser = \App\Models\User::factory()->create([
'name' => 'default',
'email' => '[email protected]',
'email_verified_at' => now(),
'password' => Hash::make('password'),
'active' => 1,
'remember_token' => Str::random(10),
'created_at'=> date("Y-m-d H:i:s"),
'updated_at'=> date("Y-m-d H:i:s"),
]);
}
Kode diatas akan membuat sebuah user dengan nama ="default" dan emailnya ="[email protected]" dengan passwordnya ="password". Dan user ini aktif karena saya set active ="1"
Kalau kita lihat kode diatas, kita membutuhkan class Hash dan class Str. Jadi agar class tersebut bisa dipanggil, maka kita perlu menambahkan atau meng include kan class tersebut didalam file. kita bisa menambahkan di bagian atas, sehinggal kode lengkapnya akan tampakk seperti dibawah ini
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$newUser = \App\Models\User::factory()->create([
'name' => 'default',
'email' => '[email protected]',
'email_verified_at' => now(),
'password' => Hash::make('password'),
'active' => 1,
'remember_token' => Str::random(10),
'created_at'=> date("Y-m-d H:i:s"),
'updated_at'=> date("Y-m-d H:i:s"),
]);
}
}
Untuk mengimport data tersebut, bisa kita lakukan dengan perintah
php artisan db:seed
Saat ini kita sudah bisa login dengan user dan password yang telah kita sediakan diatas.
Handle User Baru Untuk Register Dan Login
Selumnya sudah kita set bahwa untuk user yang register harus di set active dulu agar bisa login ke member area. Untuk itu kita harus handle dulu, agar ketika register, tidak langsung auto login. Karena secara default, laravel akan auto login ketika selesai register. Caranya adalah dengan menambahkan sebuah fungsi di dalam file app\Http\Controllers\Auth\RegisterController.php. Silahkan tambahkan fungsi dibawah ini.
public function register(Request $request)
{
$this->validator($request->all())->validate();
event(new Registered($user = $this->create($request->all())));
return $this->registered($request, $user)?: redirect()->route('register')->with('success', 'You are successfully Registered! Please contact admin to activate your account');
}
Code diatas akan di redirect ke register dengan membawa pesan kedalam file bladenya. Dengan nama Session nya adalah success. Jadi kita perlu menambah sebuah kode di dalam file blade untuk registernya. Letak file ini di resources\views\auth\register.blade.php. Untuk itu silahkan tambahkan kode di bawah ini untuk menagkan session Success
@if (\Session::has('success'))
<div class="alert alert-success">
<ul>
<li>{!! \Session::get('success') !!}</li>
</ul>
</div>
@endif
Begitu pula dengan login formnya. Kita harus memberitahu kalau user belum aktif, kita kasih keterangan . Kita bisa edit di dalam controllernya di file app\Http\Controllers\Auth\LoginController.php dengan menambahkan method baru seperti code dibawah ini.
protected function authenticated()
{
if(Auth::user()->active == '0') // Normal or Default User Login
{
auth()->logout();
return redirect()->route('login')->with('notActive', 'Your account is not active yet! Please contact admin to activate your account');
}
}
Begitu pula pada file bladenya di file resources\views\auth\login.blade.php. kita harus tambahkan kode untuk menangkap message denngan session notActive.
@if (\Session::has('notActive'))
<div class="alert alert-warning">
<ul>
<li>{!! \Session::get('notActive') !!}</li>
</ul>
</div>
@endif
Handle User Baru Untuk Register Dan Login
Berikutnya akan kita coba untuk mengganti url untuk dashboard. Karena secara default. menu dashboard ada di home, dan ketika login akan menuju ke menuhome. Kita akan coba untuk menu dashboard kita ganti dengan backend , dashboard , administrator, atau admin.
Dalam kasus ini kita akancoba bikin halaman admin dengan nama backend. pertama kita bikin sebuah controller dengan nama BackendController dengan php artisan.
php artisan make:controller BackendController
Maka nanti akan ter generate sebuah file app\Http\Controllers\BackendController.php. Di file ini lah kita akan mengontrol untuk halaman adminnya. Kemudian kita masukkan method di bawah ini kedalam class nya.
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
return view('backend.home');
}
ini akan mengarahkan bahwa untuk halaman utama akah menggunakan file blade di folder backend dengan file home.blade. langkah langkahnya adalah sebagai berikut.
- Bikin folder backend di path resources\views\backend.
- Copy atau bisa di move file resources\views\home.blade.php ke folder backend sehingga pathnya adalah resources\views\backend\home.blade.php.
- Copy atau bisa di move file resources\views\layouts\app.blade.php ke folder backend , sekalian kita rename menjadi layouts.blade.php sehingga pathnya adalah. resources\views\backend\layouts.blade.php.
- karena kita akan menggunakan layout yang kita pindah di folder backend, maka kita perlu mengedit layout yang digunakan pada home.blade.php. Caranya adalah dengan mengganti. @extends('layouts.app') menjadi @extends('backend.layouts') sehingga code di home.blade.php menjadi seperti dibawah ini.
@extends('backend.layouts') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-8"> <div class="card"> .....................
Untuk File di backend sudah selesai, kita bikin route dahulu di file routes/web . kita ganti
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
menjadi kode dibawah ini
Route::get('/backend', [App\Http\Controllers\BackendController::class, 'index'])->name('home');
//===== Tambahan ======
Route::group(['middleware' => 'auth'], function(){
Route::get('/backend', [App\Http\Controllers\BackendController::class, 'index'])->name('home');
});
Sampai di sini halaman administrator sudah berpindah dari route /home menjadi /backend. Langkah berikutnya akan kita coba handle bagaimana ketika login, otomatis redirect ke route /backend.
Redirect saat login ke route administrator
Agar kita otomatis Redirect saat login ke url tertentu, Kita bisa edit file app\Http\Controllers\Auth\LoginController.php dengan mengganti pada bagian $redirectTo dari '/home' ke '/backend'
protected $redirectTo = '/backend';
Disable Register
Terkadang kita hanya ingin member yang kita bikin hanya kita pakai untuk pribadi. Sehingga kita ingin orang lain tidak bisa register di aplikasi kita. kita bisa mengedit di route pada file routes\web.php dengan menambahkan option pada Auth::routes();
Auth::routes([
'register' => false, // Registration Routes...
'reset' => false, // Password Reset Routes...
'verify' => false, // Email Verification Routes...
]);
Kode diatas akan mendisable register, reset dan verify