Ketika kita membangun sebuah website sewa mobil, keamanan dan manajemen otentikasi menjadi faktor yang sangat penting. Laravel Passport adalah salah satu solusi yang bisa kita gunakan untuk menangani otentikasi API dengan cara yang aman dan efisien.
Passport memungkinkan kita untuk mengelola akses pengguna ke berbagai fitur di dalam aplikasi dengan cara yang mudah dan fleksibel. Ini sangat penting terutama jika kita berencana untuk membuat aplikasi sewa mobil yang melibatkan berbagai jenis pengguna seperti pelanggan, pemilik mobil, dan admin.
Bayangkan sebuah sistem sewa mobil seperti rental mobil konvensional. Dalam rental konvensional, setiap pelanggan harus melalui proses verifikasi identitas sebelum bisa menyewa mobil. Proses ini bertujuan untuk memastikan bahwa hanya orang yang telah diverifikasi yang dapat menyewa mobil, sehingga mengurangi risiko penyalahgunaan.
Laravel Passport berperan sebagai "petugas verifikasi" dalam dunia digital, memastikan bahwa hanya pengguna yang memiliki izin yang tepat yang dapat mengakses fitur-fitur tertentu di dalam aplikasi sewa mobil kita.
5 Fitur Penting untuk Website Sewa Mobil
- Manajemen Pengguna Sistem ini memungkinkan pengguna untuk mendaftar, login, dan mengelola akun. Dengan Laravel Passport, hanya pengguna terverifikasi yang dapat mengakses fitur tertentu seperti pemesanan mobil.
- Pemesanan Mobil Hanya pengguna dengan token otentikasi yang sah yang bisa melakukan pemesanan. Ini mencegah pengguna tak terdaftar dari melakukan pemesanan.
- Manajemen Kendaraan Pemilik mobil bisa mengelola informasi kendaraan mereka. Laravel Passport memastikan hanya pemilik yang sah yang dapat mengubah detail mobil seperti harga dan ketersediaan.
- Ulasan dan Rating Hanya pengguna yang telah menyewa mobil yang bisa memberikan ulasan. Ini menjaga keaslian ulasan dan menghindari spam.
- Riwayat Transaksi Pengguna dapat melihat riwayat transaksi mereka. Hanya pengguna terverifikasi yang bisa mengakses informasi ini, menjaga privasi dan keamanan data.
Tutorial Membuat Projek Laravel 11 Sewa Mobil dengan Composer
Pada tutorial kali ini, kita akan belajar cara membuat sebuah projek website sewa mobil menggunakan Laravel 11. Kita akan mulai dengan menginstal Laravel menggunakan Composer dan membuat beberapa file migration yang dibutuhkan untuk aplikasi ini, seperti categories, cities, cars, transactions, dan customers.
1) Instalasi Laravel 11 dengan Composer
Untuk memulai projek ini, pastikan Composer sudah terpasang di komputer Anda. Jika belum, silakan unduh dan instal Composer terlebih dahulu dari situs resminya.
Setelah Composer terinstal, buka terminal dan jalankan perintah berikut untuk membuat projek Laravel baru:
composer create-project --prefer-dist laravel/laravel rental-car "11.*"
Perintah ini akan membuat folder baru dengan nama rental-car
yang berisi file-file projek Laravel 11.
2) Mengatur Koneksi Database
Setelah projek berhasil dibuat, langkah selanjutnya adalah mengatur koneksi database di file .env
. Buka file .env
dan sesuaikan konfigurasi database seperti berikut:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=rental_car
DB_USERNAME=root
DB_PASSWORD=
Pastikan database rental_car
sudah dibuat di MySQL.
3) Membuat File Migration Categories
Selanjutnya, kita akan membuat file migration untuk tabel categories
. Tabel ini akan menyimpan data kategori mobil seperti SUV, sedan, atau hatchback.
Jalankan perintah berikut di terminal:
php artisan make:migration create_categories_table
Buka file migration yang baru saja dibuat di folder database/migrations
dan ubah menjadi seperti berikut:
use Illuminate\\\\Database\\\\Migrations\\\\Migration;
use Illuminate\\\\Database\\\\Schema\\\\Blueprint;
use Illuminate\\\\Support\\\\Facades\\\\Schema;
return new class extends Migration {
public function up(): void {
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});
}
public function down(): void {
Schema::dropIfExists('categories');
}
};
4) Membuat File Migration Cities
Tabel cities
digunakan untuk menyimpan data kota di mana mobil tersedia untuk disewa. Buat file migration dengan perintah berikut:
php artisan make:migration create_cities_table
Kemudian, buka file migration tersebut dan ubah menjadi seperti ini:
use Illuminate\\\\Database\\\\Migrations\\\\Migration;
use Illuminate\\\\Database\\\\Schema\\\\Blueprint;
use Illuminate\\\\Support\\\\Facades\\\\Schema;
return new class extends Migration {
public function up(): void {
Schema::create('cities', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->timestamps();
});
}
public function down(): void {
Schema::dropIfExists('cities');
}
};
5) Membuat File Migration Cars
Tabel cars
akan menyimpan informasi tentang mobil yang tersedia untuk disewa. Mobil akan terkait dengan kategori dan kota. Jalankan perintah berikut:
php artisan make:migration create_cars_table
Buka file migration yang dibuat dan ubah menjadi seperti ini:
use Illuminate\\\\Database\\\\Migrations\\\\Migration;
use Illuminate\\\\Database\\\\Schema\\\\Blueprint;
use Illuminate\\\\Support\\\\Facades\\\\Schema;
return new class extends Migration {
public function up(): void {
Schema::create('cars', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('license_plate');
$table->unsignedBigInteger('category_id');
$table->unsignedBigInteger('city_id');
$table->integer('price_per_day');
$table->timestamps();
$table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
$table->foreign('city_id')->references('id')->on('cities')->onDelete('cascade');
});
}
public function down(): void {
Schema::dropIfExists('cars');
}
};
6) Membuat File Migration Transactions
Tabel transactions
digunakan untuk mencatat transaksi penyewaan mobil oleh pelanggan. Buat file migration dengan perintah berikut:
php artisan make:migration create_transactions_table
Ubah file migration yang dibuat menjadi seperti ini:
use Illuminate\\\\Database\\\\Migrations\\\\Migration;
use Illuminate\\\\Database\\\\Schema\\\\Blueprint;
use Illuminate\\\\Support\\\\Facades\\\\Schema;
return new class extends Migration {
public function up(): void {
Schema::create('transactions', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('car_id');
$table->unsignedBigInteger('customer_id');
$table->date('rental_date');
$table->date('return_date');
$table->integer('total_price');
$table->timestamps();
$table->foreign('car_id')->references('id')->on('cars')->onDelete('cascade');
$table->foreign('customer_id')->references('id')->on('customers')->onDelete('cascade');
});
}
public function down(): void {
Schema::dropIfExists('transactions');
}
};
7) Membuat File Migration Customers
Tabel customers
digunakan untuk menyimpan data pelanggan yang menyewa mobil. Jalankan perintah berikut:
php artisan make:migration create_customers_table
Ubah file migration yang dibuat menjadi seperti ini:
use Illuminate\\\\Database\\\\Migrations\\\\Migration;
use Illuminate\\\\Database\\\\Schema\\\\Blueprint;
use Illuminate\\\\Support\\\\Facades\\\\Schema;
return new class extends Migration {
public function up(): void {
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('phone');
$table->timestamps();
});
}
public function down(): void {
Schema::dropIfExists('customers');
}
};
8) Menjalankan Migration
Setelah semua file migration selesai dibuat, jalankan perintah berikut untuk membuat tabel-tabel di database:
php artisan migrate
Perintah ini akan membuat semua tabel yang telah kita definisikan di dalam file migration ke dalam database rental_car
.
Membuat File Model dan Controller (CRUD) di Laravel 11
Setelah kita membuat file migration untuk tabel-tabel yang dibutuhkan, langkah selanjutnya adalah membuat file model dan controller untuk masing-masing tabel tersebut. Pada tutorial ini, kita akan membuat model dan controller untuk categories
, cities
, cars
, transactions
, dan customers
dengan fitur CRUD (Create, Read, Update, Delete).
1) Membuat File Model dan Controller untuk Categories
Untuk membuat model dan controller Category
, kita bisa menjalankan perintah berikut:
php artisan make:model Category -mcr
Perintah ini akan membuat file model Category
, migration, controller CategoryController
, dan resource.
Berikut adalah isi file Category.php
di folder app/Models
:
namespace App\\\\Models;
use Illuminate\\\\Database\\\\Eloquent\\\\Factories\\\\HasFactory;
use Illuminate\\\\Database\\\\Eloquent\\\\Model;
class Category extends Model {
use HasFactory;
protected $fillable = ['name'];
}
Dan berikut adalah isi file CategoryController.php
di folder app/Http/Controllers
:
namespace App\\\\Http\\\\Controllers;
use App\\\\Models\\\\Category;
use Illuminate\\\\Http\\\\Request;
class CategoryController extends Controller {
public function index() {
$categories = Category::all();
return response()->json($categories);
}
public function store(Request $request) {
$category = Category::create($request->all());
return response()->json($category);
}
public function show($id) {
$category = Category::findOrFail($id);
return response()->json($category);
}
public function update(Request $request, $id) {
$category = Category::findOrFail($id);
$category->update($request->all());
return response()->json($category);
}
public function destroy($id) {
$category = Category::findOrFail($id);
$category->delete();
return response()->json(['message' => 'Category deleted successfully']);
}
}
2) Membuat File Model dan Controller untuk Cities
Buat model dan controller City
dengan perintah berikut:
php artisan make:model City -mcr
Isi file City.php
di folder app/Models
:
namespace App\\\\Models;
use Illuminate\\\\Database\\\\Eloquent\\\\Factories\\\\HasFactory;
use Illuminate\\\\Database\\\\Eloquent\\\\Model;
class City extends Model {
use HasFactory;
protected $fillable = ['name'];
}
Dan berikut adalah isi file CityController.php
di folder app/Http/Controllers
:
namespace App\\\\Http\\\\Controllers;
use App\\\\Models\\\\City;
use Illuminate\\\\Http\\\\Request;
class CityController extends Controller {
public function index() {
$cities = City::all();
return response()->json($cities);
}
public function store(Request $request) {
$city = City::create($request->all());
return response()->json($city);
}
public function show($id) {
$city = City::findOrFail($id);
return response()->json($city);
}
public function update(Request $request, $id) {
$city = City::findOrFail($id);
$city->update($request->all());
return response()->json($city);
}
public function destroy($id) {
$city = City::findOrFail($id);
$city->delete();
return response()->json(['message' => 'City deleted successfully']);
}
}
3) Membuat File Model dan Controller untuk Cars
Buat model dan controller Car
dengan perintah berikut:
php artisan make:model Car -mcr
Isi file Car.php
di folder app/Models
:
namespace App\\\\Models;
use Illuminate\\\\Database\\\\Eloquent\\\\Factories\\\\HasFactory;
use Illuminate\\\\Database\\\\Eloquent\\\\Model;
class Car extends Model {
use HasFactory;
protected $fillable = [
'name',
'license_plate',
'category_id',
'city_id',
'price_per_day'
];
public function category() {
return $this->belongsTo(Category::class);
}
public function city() {
return $this->belongsTo(City::class);
}
}
Dan berikut adalah isi file CarController.php
di folder app/Http/Controllers
:
namespace App\\\\Http\\\\Controllers;
use App\\\\Models\\\\Car;
use Illuminate\\\\Http\\\\Request;
class CarController extends Controller {
public function index() {
$cars = Car::with(['category', 'city'])->get();
return response()->json($cars);
}
public function store(Request $request) {
$car = Car::create($request->all());
return response()->json($car);
}
public function show($id) {
$car = Car::with(['category', 'city'])->findOrFail($id);
return response()->json($car);
}
public function update(Request $request, $id) {
$car = Car::findOrFail($id);
$car->update($request->all());
return response()->json($car);
}
public function destroy($id) {
$car = Car::findOrFail($id);
$car->delete();
return response()->json(['message' => 'Car deleted successfully']);
}
}
4) Membuat File Model dan Controller untuk Transactions
Buat model dan controller Transaction
dengan perintah berikut:
php artisan make:model Transaction -mcr
Isi file Transaction.php
di folder app/Models
:
namespace App\\\\Models;
use Illuminate\\\\Database\\\\Eloquent\\\\Factories\\\\HasFactory;
use Illuminate\\\\Database\\\\Eloquent\\\\Model;
class Transaction extends Model {
use HasFactory;
protected $fillable = [
'car_id',
'customer_id',
'rental_date',
'return_date',
'total_price'
];
public function car() {
return $this->belongsTo(Car::class);
}
public function customer() {
return $this->belongsTo(Customer::class);
}
}
Dan berikut adalah isi file TransactionController.php
di folder app/Http/Controllers
:
namespace App\\\\Http\\\\Controllers;
use App\\\\Models\\\\Transaction;
use Illuminate\\\\Http\\\\Request;
class TransactionController extends Controller {
public function index() {
$transactions = Transaction::with(['car', 'customer'])->get();
return response()->json($transactions);
}
public function store(Request $request) {
$transaction = Transaction::create($request->all());
return response()->json($transaction);
}
public function show($id) {
$transaction = Transaction::with(['car', 'customer'])->findOrFail($id);
return response()->json($transaction);
}
public function update(Request $request, $id) {
$transaction = Transaction::findOrFail($id);
$transaction->update($request->all());
return response()->json($transaction);
}
public function destroy($id) {
$transaction = Transaction::findOrFail($id);
$transaction->delete();
return response()->json(['message' => 'Transaction deleted successfully']);
}
}
5) Membuat File Model dan Controller untuk Customers
Buat model dan controller Customer
dengan perintah berikut:
php artisan make:model Customer -mcr
Isi file Customer.php
di folder app/Models
:
namespace App\\\\Models;
use Illuminate\\\\Database\\\\Eloquent\\\\Factories\\\\HasFactory;
use Illuminate\\\\Database\\\\Eloquent\\\\Model;
class Customer extends Model {
use HasFactory;
protected $fillable = [
'name',
'email',
'phone'
];
}
Dan berikut adalah isi file CustomerController.php
di folder app/Http/Controllers
:
namespace App\\\\Http\\\\Controllers;
use App\\\\Models\\\\Customer;
use Illuminate\\\\Http\\\\Request;
class CustomerController extends Controller {
public function index() {
$customers = Customer::all();
return response()->json($customers);
}
public function store(Request $request) {
$customer = Customer::create($request->all());
return response()->json($customer);
}
public function show($id) {
$customer = Customer::findOrFail($id);
return response()->json($customer);
}
public function update(Request $request, $id) {
$customer = Customer::findOrFail($id);
$customer->update($request->all());
return response()->json($customer);
}
public function destroy($id) {
$customer = Customer::findOrFail($id);
$customer->delete();
return response()->json(['message' => 'Customer deleted successfully']);
}
}
Menerapkan Laravel Passport untuk API Endpoint dengan React.js
Laravel Passport memungkinkan kita untuk mengelola otentikasi API secara aman menggunakan token berbasis OAuth2. Dengan ini, kita bisa memastikan bahwa hanya pengguna yang sudah terverifikasi yang dapat mengakses endpoint API seperti categories
, cities
, cars
, transactions
, dan customers
. Pada tutorial ini, kita akan menerapkan Laravel Passport untuk API endpoint tersebut dan mengaksesnya menggunakan React.js.
1) Menginstal dan Mengonfigurasi Laravel Passport
Langkah pertama adalah menginstal Laravel Passport pada projek Laravel. Buka terminal dan jalankan perintah berikut:
composer require laravel/passport
Setelah instalasi selesai, jalankan perintah untuk mengatur tabel-tabel yang dibutuhkan oleh Passport:
php artisan migrate
php artisan passport:install
Kemudian, buka file AuthServiceProvider.php
di folder app/Providers
dan tambahkan Passport ke dalam boot
method:
use Laravel\\\\Passport\\\\Passport;
public function boot() {
$this->registerPolicies();
Passport::routes();
}
Di file config/auth.php
, ubah driver API menjadi passport
:
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
2) Membuat Endpoint API Terproteksi
Setelah Laravel Passport terkonfigurasi, kita perlu membuat endpoint API yang hanya bisa diakses oleh pengguna yang terautentikasi.
Buka file api.php
di folder routes
dan buat rute seperti berikut:
use App\\\\Http\\\\Controllers\\\\CategoryController;
use App\\\\Http\\\\Controllers\\\\CityController;
use App\\\\Http\\\\Controllers\\\\CarController;
use App\\\\Http\\\\Controllers\\\\TransactionController;
use App\\\\Http\\\\Controllers\\\\CustomerController;
Route::middleware('auth:api')->group(function () {
Route::apiResource('categories', CategoryController::class);
Route::apiResource('cities', CityController::class);
Route::apiResource('cars', CarController::class);
Route::apiResource('transactions', TransactionController::class);
Route::apiResource('customers', CustomerController::class);
});
Dengan konfigurasi ini, semua endpoint yang didefinisikan hanya bisa diakses oleh pengguna yang telah terautentikasi.
3) Membuat API Token untuk Pengguna
Agar pengguna dapat mengakses API, mereka memerlukan token otentikasi. Untuk membuat token ini, tambahkan rute untuk login di file api.php
:
use Illuminate\\\\Http\\\\Request;
use Illuminate\\\\Support\\\\Facades\\\\Auth;
Route::post('login', function (Request $request) {
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = Auth::user();
$token = $user->createToken('AccessToken')->accessToken;
return response()->json(['token' => $token]);
} else {
return response()->json(['error' => 'Unauthorized'], 401);
}
});
Endpoint ini akan menghasilkan token yang bisa digunakan oleh pengguna untuk mengakses endpoint yang dilindungi.
4) Mengakses Endpoint API Menggunakan React.js
Untuk mengakses API endpoint yang terproteksi menggunakan React.js, kita perlu mengirimkan token otentikasi bersama dengan permintaan (request).
Pertama, kita buat file api.js
untuk mengatur permintaan ke API. Misalnya, untuk mengambil data categories
:
import axios from 'axios';
const API_URL = '<http://localhost:8000/api>';
export const getCategories = async (token) => {
try {
const response = await axios.get(`${API_URL}/categories`, {
headers: {
'Authorization': `Bearer ${token}`
}
});
return response.data;
} catch (error) {
console.error('Error fetching categories', error);
throw error;
}
};
Kemudian, di file komponen React, kita bisa menggunakan fungsi ini untuk mengambil data:
import React, { useState, useEffect } from 'react';
import { getCategories } from './api';
const CategoryList = () => {
const [categories, setCategories] = useState([]);
const [token, setToken] = useState(''); // Token didapatkan dari proses login
useEffect(() => {
const fetchCategories = async () => {
try {
const data = await getCategories(token);
setCategories(data);
} catch (error) {
console.error(error);
}
};
if (token) {
fetchCategories();
}
}, [token]);
return (
<div>
<h3>List of Categories</h3>
<ul>
{categories.map(category => (
<li key={category.id}>{category.name}</li>
))}
</ul>
</div>
);
};
export default CategoryList;
Pastikan untuk mengganti token
dengan token yang valid yang diperoleh dari proses login.
5) Mengirimkan Token dari Login Form
Di aplikasi React.js, kita perlu membuat form login untuk mengambil token otentikasi:
import React, { useState } from 'react';
import axios from 'axios';
const Login = ({ setToken }) => {
const [email, setEmail] = useState('');
const [password, setPassword] = useState('');
const handleLogin = async (e) => {
e.preventDefault();
try {
const response = await axios.post('<http://localhost:8000/api/login>', {
email,
password
});
setToken(response.data.token);
} catch (error) {
console.error('Login failed', error);
}
};
return (
<form onSubmit={handleLogin}>
<h3>Login</h3>
<div>
<label>Email:</label>
<input type="email" value={email} onChange={(e) => setEmail(e.target.value)} />
</div>
<div>
<label>Password:</label>
<input type="password" value={password} onChange={(e) => setPassword(e.target.value)} />
</div>
<button type="submit">Login</button>
</form>
);
};
export default Login;
Dengan form ini, kita bisa mengambil token dari API Laravel Passport dan menyimpannya di state setToken
untuk digunakan pada permintaan API lainnya.
Membuat Data Transaksi Baru dengan React.js dan Laravel Passport
Untuk membuat data transaksi baru menggunakan React.js dengan otentikasi Laravel Passport, kita perlu mengirim permintaan POST ke API endpoint yang telah dilindungi dengan token otentikasi. Berikut ini adalah langkah-langkahnya.
1) Mengatur State dan Mengirim Permintaan API
Pertama, kita perlu membuat state untuk menampung data transaksi yang akan dikirim. Kemudian, kita buat fungsi untuk mengirim permintaan POST ke endpoint Laravel Passport.
import React, { useState } from 'react';
import axios from 'axios';
const CreateTransaction = ({ token }) => {
const [carId, setCarId] = useState('');
const [customerId, setCustomerId] = useState('');
const [rentalDate, setRentalDate] = useState('');
const [returnDate, setReturnDate] = useState('');
const [totalPrice, setTotalPrice] = useState('');
const handleCreateTransaction = async (e) => {
e.preventDefault();
try {
const response = await axios.post(
'<http://localhost:8000/api/transactions>',
{
car_id: carId,
customer_id: customerId,
rental_date: rentalDate,
return_date: returnDate,
total_price: totalPrice
},
{
headers: {
'Authorization': `Bearer ${token}`
}
}
);
console.log('Transaction created:', response.data);
} catch (error) {
console.error('Error creating transaction', error);
}
};
return (
<form onSubmit={handleCreateTransaction}>
<h3>Create New Transaction</h3>
<div>
<label>Car ID:</label>
<input
type="text"
value={carId}
onChange={(e) => setCarId(e.target.value)}
/>
</div>
<div>
<label>Customer ID:</label>
<input
type="text"
value={customerId}
onChange={(e) => setCustomerId(e.target.value)}
/>
</div>
<div>
<label>Rental Date:</label>
<input
type="date"
value={rentalDate}
onChange={(e) => setRentalDate(e.target.value)}
/>
</div>
<div>
<label>Return Date:</label>
<input
type="date"
value={returnDate}
onChange={(e) => setReturnDate(e.target.value)}
/>
</div>
<div>
<label>Total Price:</label>
<input
type="number"
value={totalPrice}
onChange={(e) => setTotalPrice(e.target.value)}
/>
</div>
<button type="submit">Create Transaction</button>
</form>
);
};
export default CreateTransaction;
Pada kode di atas, form digunakan untuk mengumpulkan data transaksi seperti car_id
, customer_id
, rental_date
, return_date
, dan total_price
. Kemudian, data tersebut dikirim ke endpoint API transactions
menggunakan token otentikasi.
2) Menampilkan Hasil dan Validasi
Setelah data dikirim, kita bisa menampilkan hasil atau pesan kesalahan dari permintaan API. Pastikan token yang dikirimkan pada header memiliki hak akses yang tepat untuk membuat transaksi baru.
const handleCreateTransaction = async (e) => {
e.preventDefault();
try {
const response = await axios.post(
'<http://localhost:8000/api/transactions>',
{
car_id: carId,
customer_id: customerId,
rental_date: rentalDate,
return_date: returnDate,
total_price: totalPrice
},
{
headers: {
'Authorization': `Bearer ${token}`
}
}
);
console.log('Transaction created:', response.data);
alert('Transaction successfully created!');
} catch (error) {
console.error('Error creating transaction', error);
alert('Failed to create transaction. Please try again.');
}
};
Dengan kode ini, jika permintaan berhasil, kita akan menampilkan pesan bahwa transaksi berhasil dibuat, dan jika gagal, kita akan menampilkan pesan kesalahan.
3) Menghubungkan Form dengan Komponen Utama
Terakhir, kita perlu menghubungkan komponen CreateTransaction
dengan komponen utama atau halaman yang memuat token otentikasi untuk mengakses endpoint yang dilindungi.
import React, { useState } from 'react';
import CreateTransaction from './CreateTransaction';
const App = () => {
const [token, setToken] = useState('');
const handleLogin = async () => {
try {
const response = await axios.post('<http://localhost:8000/api/login>', {
email: '[email protected]',
password: 'password'
});
setToken(response.data.token);
} catch (error) {
console.error('Login failed', error);
}
};
return (
<div>
<h1>Rental Car Management</h1>
<button onClick={handleLogin}>Login to Get Token</button>
{token && <CreateTransaction token={token} />}
</div>
);
};
export default App;
Pada komponen App
di atas, kita membuat fungsi login untuk mendapatkan token otentikasi. Token ini kemudian digunakan sebagai prop yang dikirim ke komponen CreateTransaction
untuk mengakses endpoint API yang dilindungi oleh Laravel Passport.
Penutup dan saran dari mentor
Laravel adalah salah satu framework PHP yang cocok dipelajari karena fleksibilitas dan kemudahan penggunaannya. Selain itu, Laravel juga menawarkan berbagai fitur lengkap yang dapat membantu pengembang membuat aplikasi web dengan cepat dan efisien. Popularitas Laravel terus meningkat dalam beberapa tahun terakhir, menjadikannya pilihan tepat bagi developer yang ingin menguasai web development modern.
Untuk mempelajari Laravel lebih dalam, belajar di BuildWithAngga bisa menjadi solusi terbaik. Dengan bimbingan mentor expert dan berpengalaman, kamu bisa mengembangkan kemampuan coding sekaligus menjadikan projek skripsimu lebih menarik dan profesional. Di BuildWithAngga, kamu akan mendapatkan akses seumur hidup ke semua materi, sehingga bisa belajar kapan saja dan di mana saja.
Tidak hanya itu, kamu juga bisa bertanya langsung kepada mentor jika menemui kendala dalam belajar atau mengerjakan projek. Ini akan membuat proses belajarmu lebih produktif dan terarah. Jadi, jangan ragu untuk mulai belajar Laravel dan tingkatkan skill coding-mu bersama BuildWithAngga!