Pada tutorial kali ini saya akan mencoba menjelaskan bagaimana cara memasang laravel passport. pada tutorial kali ini saya menggunakan laravel terbaru yakni laravel 8. Okeh langsung saja…

oh iya, sebelum memulai pastikan anda sudah menginstall laravel terlebih dahulu ya 🙂

Pertama kita install dulu laravel/passport nya dengan cara berikut :

composer require laravel/passport

Setelah kita menginstall laravel/passport jangan lupa untuk mengatur panjang karakter string ke 191 di app/Providers/AppServiceProvider.php dengan menambahkan kode berikut ke function boot

Schema::defaultstringLength(191);
<?php
namespace App\Providers;

use Illuminate\Support\Facades\Schema;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        Schema::defaultstringLength(191);
    }
}

Selanjutnya kita akan meng-generate encryption keys dan personal access client menggunakan perintah ini :

php artisan passport:install

Tambahkan trait HasApiTokens di model User.php untuk memberitahukan kepada User Model untuk menggunakan trait tersebut.

<?php

namespace App\Models;

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

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, 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',
    ];
}

Tambahkan routes passport ke AuthServicePorivder.php yang berlokasi di folder app/Providers dan aktifkan ModelPolicy. Kurang lebih seperti ini :

<?php

namespace App\Providers;

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

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

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

Terakhir kita tinggal mengatur driver untuk api ke passport di config/auth.php

'guards' => [ 
       'web' => [ 
           'driver' => 'session', 
           'provider' => 'users', 
       ],
      'api' => [ 
           'driver' => 'passport', //ganti baris ini secara default isinya adalah token
           'provider' => 'users', 
            'hash' => false, ], 
],

Sampai pada tahap ini kita sudah berhasil memasang / menginstall dan mengkonfigurasi laravel/passport di aplikasi kita.

Untuk cara menggunakan laravel/passport akan di bahas pada postingan selanjut nya