~ We are changing the world with technology. ~

Matt Mullenweg

API Otentikasi Menggunakan Passport Laravel

API Otentikasi Menggunakan Passport Laravel

14043 Dilihat

Pada kesempatan kali ini kita akan membahas tentang cara membuat API otentikasi menggunakan passport di Laravel. API atau sering juga dikatakan sebagai Web Service digunakan untuk berkomunikasi antar aplikasi, dan biasanya banyak digunakan untuk keperluan develop aplikasi mobile. Laravel cukup populer karena kemudahannya dalam membuat API. Adapun poin yang akan kita capai dalam pembelajaran kali ini adalah:

  1. Membuat API Login

  2. Membuat API Register

  3. Menampilkan Data

Tapi poin yang tak kalah penting adalah membuat anda mengetahui apa itu API dan bagaimana cara membuatnya.

Membuat API & Menampilkan Data

Best practice dalam belajar pemrograman adalah dengan mencoba menyelesaikan kasus yang berkaitan dengan topik yang akan kita pelajari, maka kali ini kita akan coba membuat simple API otentikasi. Laravel memperkenalkan package Passport untuk membuat API otentikasi. Passport package memungkinkan anda membuat otentikasi menggunakan OAuth2, JWT, etc. Pada contoh kali ini kita akan menggunakan passport package untuk membuat API otentikasi user. Install Laravel terlebih dahulu, pada tutorial kali ini saya menggunakan Laravel 5.4:

composer create-project --prefer-dist laravel/laravel api "5.4.*"

Selanjutnya anda harus menginstall Passport package, jalankan command berikut:

composer require laravel/passport

Setelah package berhasil di install, buka file config/app.php dan tambahkan potongan code berikut pada bagian providers:

Laravel\Passport\PassportServiceProvider::class,

Kemudian lalukan migrate dengan command:

php artisan migrate

Pastikan sebelum melakukan migrate, informasi database anda telah di perbaharui pada file .env. Kemudian gunakan command passport:install untuk membuat token keys .

php artisan passport:install

Setelah token keys berhasil digenerate, hal yang perlu kita lakukan selanjutnya adalah konfigurasi pada beberapa bagian: model, service provider dan auth config. Mari kita lakukan satu persatu secara berurutan:

app/User.php

<?php

namespace App;

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

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

app/Providers/AuthServiceProvider.php

<?php

namespace App\Providers;

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

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();
        //
    }
}

config/auth.php

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

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

Langkah persiapan untuk membuat API telah selesai, selanjutnya adalah membuat route. Secara default Laravel telah menyediakan route khusus untuk api yang dapat ditemukan pada direktori: routes/api.php. Tambakan potongan kode berikut:

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

Route::group(['middleware' => 'auth:api'], function(){
	Route::post('details', 'API\[email protected]');
});

Lalu buat UserController.php yang akan diletakkan keadalam folder: API. Jalankan command berikut:

php artisan make:controller API/UserController

Buka file app/Http/Controllers/API/UserController.php, kemudian tambahkan code berikut:

<?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 details()
    {
        $user = Auth::user();
        return response()->json(['success' => $user], $this->successStatus);
    }
}

 

Sampai disini API yang telah kita buat sudah bisa digunakan, silahkan jalankan command:

php artisan serve

Untuk proses testing, saya menggunakan Postman.

API Login

API Register

API Details

Full Stack Developer & Remote Worker salah satu perusahaan asal Australia. Senang dengan teknologi baru. Laravel addict yang tidak fanatik. Merekam jejak dengan menulis

Import With Relationships Using Laravel Excel Laravel

Import With Relationships Using Laravel...

Migrasi aplikasi ke dalam sistem yang baru, terkadang ada banyak perbedaan yang cukup signifikan, salah satu diantaranya adalah struktur database antara sistem yang lama dengan sistem yang baru. Berik...

Convert Jetstream From Tailwind to Bootstrap Laravel

Convert Jetstream From Tailwind to Boots...

Jetstream memperkenalkan diri dengan sebagai starter kit dengan design yang cukup menarik sebagai 'permulaan' dalam mengembang aplikasi menggunakan Laravel. Jetstream menyediakan beberapa fitur, diant...

Image Watermark in Laravel 8 Laravel

Image Watermark in Laravel 8

Watermark menjadi salah satu cara untuk mengantisipasi penggunaan gambar tanpa izin pemiliknya dimana hak atas gambar tersebut harus mendapatkan izin yang bersangkutan. Ada beragam kasus yang sering m...

Komentar