API Otentikasi Menggunakan Passport Laravel

Pada kesempatan kali ini kita akan membahas tentang cara membuat API otentikasi menggunakan passport di Laravel. Api sering juga di kaitkan sebagai Web Service digunakan untuk berkomunikasi atau mengintegrasikan dan mengizinkan dua aplikasi yang berbeda secara bersamaan untuk saling terhubung satu sama lain..

Poin yang kita akan buat dalam pembelajaran kali ini :

  1. Membuat API Login
  2. Membuat API Register
  3. Menampilkan data

Tools Yang diperlukan :

  1. Text editor (Visual Studio Code/sublime text)
  2. Composer
  3. Local Server (Xampp)
  4. Postman

Cara Membuat API Otentikasi Menggunakan Passport di Laravel

Dalam kasus ini kita akan mencoba proses login, register, logout dan menampilkan data.

1. Buat Project baru di laravel

Membuat Project Baru di laravel. jika sudah terinstall XAMPP dan Composer, tinggal ketik command berikut melalui terminal anda:

composer create-project laravel/laravel laravel_passport

Tunggu sampai proses installasi selesai.

2. Install Package Passport Menggunakan Composer

Masukan command “cd C:\xampp\htdocs\laravel_passport” pada jendela Command Prompt untuk masuk ke direktori project . saya beri nama project saya tadi dengan nama laravel_passport

lalu, silahkan ketik command di bawah ini untuk menginstall package passport di Laravel:

composer require laravel/passport

jika sudah terinstall, buka project anda di text editor (visual studio code/sublime).

3. Konfigurasi Package Passport

Agar package ini bisa dijalankan, maka kita perlu mendaftarkannya dulu di config/app.php. Tambahkan:

Laravel\Passport\PassportServiceProvider::class,

4. Buat Database dan Konfirguarasi

Buat database dengan nama laravel_passport, Lalu tambahkan pada bagian .env seperti berikut:

selanjutnya buka terminal Visual Studio Code, kemudian migrate dengan command :

php artisan migrate

Install passport dengan command agar mendapatkan token keys.

php artisan passport:install

5 .Ubah Model User

Buka User.php di dalam direktori app/User.php, kemudian ubah seperti berikut :

<?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',
    ];
}

6. Ubah AuthService Provider

buka AuthServiceProvider.php di direktori app/Providers/AuthServiceProvider.php kemudian ubah seperti 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();
    }
}

7. Ubah Auth

Buka Config/auth.php , lalu cari kode seperti ini:

lalu ubah menjadi :

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

8. Membuat Controller User

Ketik command di bawah ini:

php artisan make:controller Api/UserController

9. Membuat Route

Kemudian ubah UserController.php di dalam direktori app/Http/Controllers/Api/UserController.php menjadi :

<?php

namespace App\Http\Controllers\API;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\User;
use Illuminate\Support\Facades\Auth;
use Validator;

class UserController extends Controller
{

    public $successStatus = 200;

    public function login(){
        if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
            $user = Auth::user();
            $success['token'] =  $user->createToken('nApp')->accessToken;
            return response()->json(['success' => $success], $this->successStatus);
        }
        else{
            return response()->json(['error'=>'Unauthorised'], 401);
        }
    }

    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()], 401);            
        }

        $input = $request->all();
        $input['password'] = bcrypt($input['password']);
        $user = User::create($input);
        $success['token'] =  $user->createToken('nApp')->accessToken;
        $success['name'] =  $user->name;

        return response()->json(['success'=>$success], $this->successStatus);
    }

    public function logout(Request $request)
    {
        $logout = $request->user()->token()->revoke();
        if($logout){
            return response()->json([
                'message' => 'Successfully logged out'
            ]);
        }
    }

    public function details()
    {
        $user = Auth::user();
        return response()->json(['success' => $user], $this->successStatus);
    }
} 

untuk proses ini kita akan menggunakan api.php. buka direktori routes/api.php kemudian tambahkan:

Route::post('login', 'API\[email protected]');
Route::post('register', 'API\[email protected]');

Route::group(['middleware' => 'auth:api'], function(){
    Route::get('user/detail', 'Api\[email protected]');
    Route::post('logout', 'Api\[email protected]');
}); 

Nah.. Sampai disini proses pembuatan API menggunakan package Passport sudah selesai, sekarang saat kita Tes dengan Postman!

10. Php artisan serve

Sebelum membuka Postman, langka berikutnya adalah, kita jalankan command berikut ini pada terminal :

php artisan serve

Selanjutnya buka Postman kalian, jika blum maka silakan Instal dulu.

11. Buka Postman

Proses Register

Hasilnya :

Proses Login :

Proses Tampil Data :

Ubah method ke GET dan Ubah juga TYPE menjadi Bearer Token, akan muncul kolom Token lalu masukan token hasil login tadi

Hasil :

Proses Logout :

Penutup

Cukup Sekian Artikel tentang Proses membuat API Otentikasi menggunakan package Passport ini.

Termikasih 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *