Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

Tutorial Laravel #8: Membuat API Otentikasi Menggunakan Passport

6 min read

Tutorial Belajar Framework Laravel

Hari ini saya akan sharing tutorial cara membuat API otentikasi menggunakan package passport di Laravel. Login, Register, Logout dan Study kasus akan dibahas secara lengkap. Namun sebelum masuk ke pembahasan, ada baiknya berkenalan dulu dengan API.

Apa Itu API?

API merupakan singkatan dari Aplication Programming Interface. Api biasa digunakan untuk mengintegrasikan antara dua aplikasi secara bersamaan. Misalnya antara client dan server. Dengan adanya API, maka developer akan lebih mudah mengintegrasikan kedua aplikasi hingga terhubung.

API paling banyak digunakan untuk memberikan akses tertentu dari server ke aplikasi client semisal mobile. API sering disebut sebagai Web Service yang digunakan untuk berkomunikasi antar aplikasi. Misalnya di aplikasi Android, iOS, dan lain-lain.

Lebih jelasnya silahkan lihat gambar di bawah ini:

Laravel API otentikasi menggunakan package passport

Apa Sih Manfaat Menggunakan API?

Salah satu manfaat menggunakan API adalah dapat memanfaatkan sumber daya dari aplikasi lain tanpa perlu mengetahui bagaimana aplikasi itu dibuat. Misalnya dalam proses login pada website yang kita buat membutuhkan login menggunakan Google. Tidak mungkin kita tahu apa saja database dan field-field pendukung login di Google. Kita hanya dibatasi untuk menggunakan sumber daya yang sudah disediakan saja.

Cara Membuat API Otentikasi Menggunakan Passport di Laravel

Setelah kita mengetahui apa itu API serta manfaatnya, kini saatnya mulai membuat project Laravel menggunakan package Passport. Dalam kasus ini kita akan mencoba proses login, register, logout dan menampilkan data.

Let’s go!

Step 1# – Buat Project Baru di Laravel

Membuat project baru di Laravel sangat mudah. Selama sudah terinstall XAMPP dan Composer, tinggal ketik command berikut melalui terminal:

composer create-project laravel/laravel laravel_passport

Tunggu sampai proses installasi selesai.

Step #2 – Install Package Passport Menggunakan Composer

Silahkan ketik command di bawah ini untuk menginstall package passport di Laravel:

composer require laravel/passport

Step #3 – Konfigurasi Package Passport

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

Laravel\Passport\PassportServiceProvider::class, 

Step #4 – Buat Database dan Konfigurasi

Buat database dengan nama laravel_passport, kemudian modifikasi pada bagian .env seperti berikut:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_passport
DB_USERNAME=root
DB_PASSWORD=

Kemudian migrate dengan command:

php artisan migrate

Terakhir, install passport dengan command agar mendapatkan token keys.

php artisan passport::install

Step #5 – Memodifikasi Model User

Buka User.php di dalam direktori app/User.php, kemudian modifikasi:

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

Step #6 – Modifikasi AuthServiceProvider

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

 

Step #7 – Modifikasi Auth

Cari kode di bawah ini di direktori config/auth.php:

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

Kemudian ubah menjadi:

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

Step #8 – Membuat Controller User

Ketik command di bawah ini:

php artisan make:controller Api/UserController

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

<?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);
    }
} 

Step #9 – Membuat Route

By default, Laravel sudah menyedian 2 route, yaitu web dan api. Nah, dalam proses ini kita akan menggunakan api.php. Silahkan buka direktori routes/api.php kemudian tambahkan:

Route::post('login', 'API\UserController@login');
Route::post('register', 'API\UserController@register');

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

Sampai di sini proses pembuatan API menggunakan package Passport sudah selesai. Kini saatnya testing!

Testing

Pertama-tama, jalankan command berikut ini:

php artisan serve

Sekarang silahkan install Postman bagi yang belum. Jika sudah pernah menginstall Postman, abaikan proses penginstallan.

Proses Registrasi

Laravel API otentikasi menggunakan package passport

Hasilnya

Laravel API otentikasi menggunakan package passport

Proses Login

Laravel API otentikasi menggunakan package passport

Proses Menampilkan Data

Laravel API otentikasi menggunakan package passport

Hasilnya

Laravel API otentikasi menggunakan package passport

Proses Logout

Laravel API otentikasi menggunakan package passport

Penutup

Alhamdulillah proses membuat API Otentikasi menggunakan package Passport telah selesai. Sekarang aplikasi web yang Anda buat bisa dikembangkan untuk terhubung ke perangkat lain.

Anda bisa mengembangkan tutorial ini ke depannya. Semoga bermanfaat dan bisa membantu.

Aamiin.

Ilmu Coding Ilmucoding.com - Merupakan situs yang membantu Anda belajar coding lebih mudah, nyaman, interaktif dan profesional. Belajar sekarang di ilmu coding. GRATIS

4 Replies to “Tutorial Laravel #8: Membuat API Otentikasi Menggunakan Passport”

  1. boleh kah saya tahu pada saat terjadinya proses login token yg di simpan pada tabel apa yaa untuj memastikan pakah ada data yang fi hapus atau tidak

    teirma kasaih

    1. Pada tutorial saya tidak menyimpan token dalam suatu table. Tetapi, hal ini bisa kita lakukan seandainya ingin menyimpan token di suatu table.

      Silahkan dikembangkan …

Leave a Reply

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

Jika terbantu dengan artikel ini, silahkan share, beri komentar dan "klik" 1 kali pada iklan ya.