X

Thursday, March 24, 2022

Laravel Cara Menggunakan Passport Sebagai Authentikasi Token API

Secara default laravel menggunakan sanctum untuk membuat Authentikasi Token API. Namun pengguna dapat menggunakan package lain untuk membuat Authentikasi Token API salah satunya yaitu Passport.

Berikut cara pemasangan Passport pada Laravel :

1. Buka atau Buat project baru Laravel beserta databasenya (tabel biarkan kosong). 


2. Sebelumnya untuk mempermudah dalam pengetesan nantinya silahkan pasang Bootstrap Auth
 

3. Setelah terpasang lanjut untuk memasang package passport dengan menggunakan perintah "composer require laravel/passport" pada terminal.
 

4. Lakukan migration dengan perintah php artisan migrate kemudian install passport php artisan passport:install
 

5. Buka app\Models\User.php, cari kode use Laravel\Sanctum\HasApiTokens; ganti menjadi use Laravel\Passport\HasApiTokens;
 

6. Buka app\Providers\AuthServiceProvider.php kemudian tambahkan code use Laravel\Passport\Passport; di atas class AuthServiceProvider extends ServiceProvider.
 

7. Buka config\auth.php cari kode :


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

Ubah menjadi

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

8. Jalankan perintah "php artisan passport:install --uuids".

9. Buka routes\api.php tambahkan kode Route::post('/login', 'App\Http\Controllers\Auth\LoginController@login')->name('login');.

10. Buka app\Http\Controllers\Auth\LoginController.php. Isi sesuai dengan code di bawah :

<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\AuthenticatesUsers;

use Illuminate\Http\Request;

use App\Models\User;

class LoginController extends Controller
{
/*
|--------------------------------------------------------------------------
| Login Controller
|--------------------------------------------------------------------------
|
| This controller handles authenticating users for the application and
| redirecting them to your home screen. The controller uses a trait
| to conveniently provide its functionality to your applications.
|
*/

use AuthenticatesUsers;

/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;

/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
public function login(Request $request)
{
$input = $request->all();

$this->validate($request, [
'email' => 'required',
// 'username' => 'required',
'password' => 'required',
]);

$fieldType = filter_var($request->email, FILTER_VALIDATE_EMAIL) ? 'email' : 'username';

$arrayauthuser = [
$fieldType => $input['email'],
'password' => $input['password']
];



if(auth()->attempt($arrayauthuser))
{


$token = auth()->user()->createToken('isi_sesuai_keinginan')->accessToken;


return response()->json([
'token' => $token
], 200);



}else{
return response()->json([
"response" => [
"status" => 201,
"message" => "Failed"
],
"data" => null
], 201);
}
}
}

11. Sampai pada tahap pengetesan. Caranya buat akun baru melalui menu registrasi seperti pada gambar, jika tidak ada silahkan pasang Bootstrap Auth terlebih dahulu.


12. Buka Aplikasi Postman kemudian buat request seperti di bawah :



Url, email, password sesuaikan dengan web anda. Jika akun berhasil ditemukan akan muncul token seperti gambar di bawah :
 



 

Token inilah yang akan digunakan untuk Authentikasi apabila client API ingin melakukan request.


Bagikan artikel ke:

Facebook Google+ Twitter

0 comments:

Post a Comment