Simple Auth Laravel Passport API - Dunia Laravel
Masih membahas authentikasi seperti artikel sebelumnya tentang Laravel Breeze, namun sekarang kita bakal bahas authentikasi yang tidak menggunakan view. Sistem seperti ini biasa digunakan untuk aplikasi yang menggunakan API.
Table of Content
- What is Laravel Passport
- Why We Need Laravel Passport
- Things that Need to be Prepared
- Install laravel Passport
- Setting Models, Routes, and Controllers
- Testing API
- What's Next?
What is Laravel Passport
Laravel passport package yang menyediakan fitur pembuatan token untuk proses autentikasi dengan basis OAuth2.
Why We Need Laravel Passport
Sama seperti autentikasi pada umumnya Laravel Passport juga menyediakan fitur autentikasi untuk login menggunakan token. Jadi dengan menggunakan package ini, pembuatan sistem autentikasi kita nanti akan lebih terbantu.
Things that Need to be Prepared
Sebuah proyek Laravel yang sudah di setting file .env-nya agar siap konek ke database.
Install Laravel Passport
Pertama download dulu package nya pake perintah dibawah yang dijalankan di folder proyek laravelnya.
composer require laravel/passport
Perintah itu nanti bakal download package lewat composer secara otomatis. Setelah package udah bener-bener keinstal, sekarang jalankan perintah migrasi database
php artisan migrate
Dari package passport akan ada tambahan beberapa tabel yang menyangkut OAuth.
Setting Models, Routes and Controllers
Database sudah terbuat, selanjutnya kita bisa melakukan input data ke databasenya. Pertama buat controller dulu buat nampung fungsi register dan loginnya.
php artisan make:controller AuthController
Setelah controller dibuat, selanjutnya kita buat fungsi register dan loginnya pake cara ala-ala API. Pertama buat fungsi registernya dulu.
public function register(Request $request){
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'password' => 'required',
'c_password' => 'required|same:password',
]);
if($validator->fails()){
return response()->json(['error' => $validator->errors()], 406);
}
$input = $request->all();
$input['password'] = bcrypt($input['password']);
$user = User::create($input);
$success['token'] = $user->createToken('MyApp')->accessToken;
$success['name'] = $user->name;
return response()->json(['success' => $success], 200);
}
Karena disini kita niatnya mau buat API, maka return dari fungsi yang kita buat menggunakan JSON. Kalo kalian perhatikan dibagian akhir dari JSON nya ada angka "200" atau "406", angka itu merupakan response status yang kalian bisa cari lebih detail di google.
Selanjutnya fungsi Loginnya.
public function login(Request $request){
if(Auth::attempt(['email' => $request->email, 'password' => $request->password])){
$user = Auth::user();
$success['token'] = $user->createToken('MyApp')-> accessToken;
$success['name'] = $user->name;
return response()->json(['success' => $success], 200);
}
else{
return response()->json(['failed' => 'Unauthorised', 401]);
}
}
Sebelumnya jangan lupa import library Auth dan Validator-nya, juga model User nya.
use Illuminate\Support\Facades\Auth;
use Validator;
use App\Models\User;
Untuk pengaturan di model, kita hanya perlu menambahkan
use Laravel\Passport\HasApiTokens;
Selanjutnya karena kita akan menggunakan API, jadi kita define routenya pada file routes/api.php. Buat 2 route dengan method POST untuk register dan login-nya.
Route::post('register', [AuthController::class, 'register']);Route::post('login', [AuthController::class, 'login']);
Testing API
Kalo udah dibuat semua sekarang tinggal kita test. Disini aku test nya pake postman. Caranya tinggal kita coba lakukan POST data ke route yang udah dibuat dan jangan lupa jalankan dulu server nya pake perintah
php artisan serve
Route yang kita coba adalah http://localhost:8000/api/register dan http://localhost:8000/api/login
Hasil bakal keliatan kaya gambar diatas. Jadi nanti output dari fungsinya akan mengeluarkan token yang telah dibuat, dan untuk register juga akan menambah data baru di tabel 'user'. Token itu nantinya bakal dipake sebagai kode buat user yang sudah ter-Authorize yang bakal dipake disisi Front End.
What's Next?
Kamingsun
Komentar
Posting Komentar