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 :
- Membuat API Login
- Membuat API Register
- Menampilkan data
Tools Yang diperlukan :
- Text editor (Visual Studio Code/sublime text)
- Composer
- Local Server (Xampp)
- 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\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'); });
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 🙂