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

Postingan Populer