Cara Membuat API di Laravel Menggunakan Library Passport – Part 1

1 min read

Halo teman-teman dewakoding.com, kali ini kita akan sama-sama belajar bagaimana membuat Restful API menggunakan framework Laravel (Bahasa PHP). Ada beberapa cara untuk membuat Restful API di Laravel, kali ini kita akan membuat dengan library passport.

Nantinya dengan library passport ini, request dari client menggunakan mekanisme OAuth2. Yang akan kita coba buat adalah

  • API Register
  • API Login
  • API Get Profile User
  • API Logout

Oke langsung saja, pada kali ini kita akan melakukan konfigurasi passport di project Laravel kita ya. Diasumsikan disini teman-teman udah punya project laravel yaa.

Pertama ketikan perintah dibawah ini

composer require laravel/passport

akan muncul tampilan seperti diatas…biarkan saja sampai selesai

Kemudian buka file config/app.php, ketikan code berikut di dalam array providers

Laravel\Passport\PassportServiceProvider::class

seperti gambar dibawah ini

Kemudian jalankan perintah migrasi database dibawah ini di terminal

php artisan migrate

secara otomatis, laravel akan membuat 5 table di database

Setelah sukses menjalankan migrasi database, selanjutnya kita jalankan perintah ini untuk membuat client secret

php artisan passport:install

Langkah selanjutnya kita lakukan konfigurasi penambahan kode dibeberapa bagian, diantaranya

  • app/Providers/AuthServiceProvider.php
  • Models/User.php
  • config/auth.php

Ubah kodingan pada AuthServiceProvider.php seperti dibawah ini

<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Gate;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * The policy mappings for the application.
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * Register any authentication / authorization services.
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();
        Passport::routes();
        //
    }
}

Ubah kodingan Models/User.php, seperti dibawah ini

<?php

namespace App;

use Laravel\Passport\HasApiTokens;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use HasApiTokens,Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

Ubah kodingan config/auth.php seperi dibawah ini

'guards' => [
   'web' => [
      'driver' => 'session',
      'provider' => 'users',
   ],

   'api' => [
       'driver' => 'passport',
       'provider' => 'users',
   ],
]

Konfigurasi sudah selesai, lanjut ke part 2 yaa…

Septiawan Aji Pradana

Leave a Reply

Your email address will not be published.