Cara menggunakan firebase/php-jwt packagist

I'm trying to install php-jwt. When I enter the following command

composer require firebase/php-jwt

it gives the following error.

    Using version ^4.0 for firebase/php-jwt
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - auth0/auth0-php 4.0.12 requires firebase/php-jwt ^3.0 -> satisfiable by firebase/php-jwt[v3.0.0] but these conflict with your requirements or minimum-stability.
    - auth0/auth0-php 4.0.12 requires firebase/php-jwt ^3.0 -> satisfiable by firebase/php-jwt[v3.0.0] but these conflict with your requirements or minimum-stability.
    - auth0/auth0-php 4.0.12 requires firebase/php-jwt ^3.0 -> satisfiable by firebase/php-jwt[v3.0.0] but these conflict with your requirements or minimum-stability.
    - Installation request for auth0/auth0-php (locked at 4.0.12, required as ~4.0) -> satisfiable by auth0/auth0-php[4.0.12].


Installation failed, reverting ./composer.json to its original content.

For better understanding giving the screenshot here.

Cara menggunakan firebase/php-jwt packagist

I've tried enough but couldn't find any good solution.

asked Mar 1, 2017 at 13:17

that's because your are trying to install the latest version of php-jwt which is: 4.0 as shown at packagist.org.

In the same time which is another packages - seems to be auth0 is using older version of php-jwt which is 3.0, so you will have to install php-jwt with the version 3.0 as follows:

composer require firebase/php-jwt:^3.0

OR

update your auth0 package to the latest version which is using the latest major version of php-jwt as shown in here:

"firebase/php-jwt" : "^4.0"

Note: Don't forget to take a backup of your project before updating your packages.

kenorb

144k76 gold badges654 silver badges710 bronze badges

answered Mar 1, 2017 at 13:28

Cara menggunakan firebase/php-jwt packagist

hassanhassan

7,5542 gold badges23 silver badges34 bronze badges

2

Photo by Mack Fox (MusicFox) on Unsplash

Membuat sebuah token pada lumen sangat penting terlebih jika Anda mulai bermain di Restful API. JWT (Json Web Token) adalah sebuah metode yang digunakan untuk mengamankan kumpulan informasi yang dibungkus dalam sebuah parameter url yang terdiri dari header, payload, dan signature. Sederhananya, JWT dapat digunakan sebagai security untuk mengamankan Restful API Anda. Penjelasan tentang JWT, akan saya buat dalam artikel tersendiri. Sekarang langsung saja kita praktekan cara membuat Authentication Token untuk lumen dengan php-jwt.

Sebelum saya mulai, saya asumsikan Anda sudah mempersiapkan hal berikut :

  1. Menginstall Composser
  2. Menginstall Lumen

Sedangkan hal — hal yang akan kita lakukan dalam artikel ini diantaranya :

  1. Membuat database migrasi untuk user
  2. Membuat database model factory
  3. Membuat database seeder untuk user
  4. Setting bootstrap/app.php
  5. Menginstall php-jwt token
  6. Generate Token via Login di Route
  7. Konfigurasi Proteksi Route dengan jwt
  8. Testing API

#1 Membuat Database Migrasi untuk User

Pertama yang kita lakukan adalah membuat migration database untuk table user. Caranya mudah masuk ke terminal kemudian ketik seperti berikut :

php artisan make:migration create_users_table

Dengan perintah tersebut maka kita akan membuat file baru di folder database/migration/tgl_user_table. Selanjutnya edit seperti berikut :

Fungsi diatas digunakan untuk membuat sebuah table user dengan kolom id, name, email, dan password. Sebelum kita lakukan migration, kita lanjut ke step selanjutnya terlebih dahulu.

#2 Konfigurasi Database Model Factory

Langkah selanjutnya adalah kita buat model factory yang nantinya kita gunakan untuk membuat sebuah seeder yang berfungsi sebagai seed atau data dummy agar kita tidak kebingungan bolak — balik mengisi atau membuat data dummy.

Buka file Model Factorypada folder database/factories/ModelFactory.php. lalu lakukan sedikit penambahan baris koding seperti berikut :

Pengaturan tersebut artinya kita memiliki sebuah pengaturan yang nanti akan digunakan untuk membuat seeder dengan memanfaatkan fungsi faker/generator. fungsi inilah yang nanti berperan dalam generate sebuah data dummy.

#3 Membuat Database Seeder untuk User

Setelah kita desain database factory-nya. Sekarang saatnnya membuat seeder dengan mengetikkan perintah berikut pada terminal :

php artisan make:seed UsersTableSeeder

Perintah tersebut secara otomatis akan men-generate sebuah file pada database/seed/ dengan nama UserTableSeeder.php. Tambahkan satu baris coding seperti berikut :

Dalam perintah tersebut, artinya kita akan men-generate 100 data dummy pada table user. Bayangkan betapa mudahnya membuat data dummy di lumen / laravel.

Jangan lupa untuk mengenalkan UserTableSeeder ke DatabaseSeeder.php terlebih dahulu karena file yang dipanggil nanti adalah file tersebut. Lakukan penambahan konfigurasi seperti berikut :

#4 Setting bootstrap/app.php

Eits, jangan buru — buru sebelum kita mulai migrasi. Ubah dulu konfigurasi boostrap/app.php sesuai pengaturan berikut :

Periksa dan tambahkan jika belum ada, uncomment beberapa perintah. Pastikan sesuai dengan baris kode diatas. Jika sudah baru kita lakukan migrasi dan generate seeder dengan perintah berikut :

php artisan migrate
php artisan db:seed

Dengan perintah tersebut, Maka anda sudah melakukan migrasi ke database yang artinya anda membuat sebuah table user dengan dummy data sebanyak 100. Isi table user anda kurang lebih akan seperti tampilan berikut :

#5 Menginstall php-jwt token

Setelah tidak ada masalah, maka selanjutnya kita lakukan penambahan library baru php-jwt pada composer kita dengan perintah berikut :

composer require firebase/php-jwt

Tunggu proses updating composer hingga selesai. Seharusnya sampai disini tidak ada masalah yang berarti.

#6 Generate Token via Login di Route

Selajutnya kita akan buat sebuah route untuk mengenerate token ketika user melakukan login. Kita tambahkan pengaturan pada routes/web.php seperti berikut :

$router->post(
'auth/login',
[
'uses' => 'AuthController@authenticate'
]
);

Kemudian kita buat sebuah controller baru sebagai Authentikasi. Masuk ke dalam folder app/Http/Controllers. kemudian buat file baru dengan nama AuthController.php dan isi file dengan codingan seperti berikut :

Jika sudah, buka terminal kemudian jalankan web lumen anda dengan perintah berikut :

php -S localhost:8080 -t public

Jika berhasil, maka akan muncul tulisan

Lumen (5.6.4) (Laravel Components 5.6.*)

Jika anda menggunakan lumen versi 5.6.4. lanjutkan dengan testing dengan membuka postman. lalu memasukan url

http://localhost:8080/auth/login

jangan lupa untuk mengisikan email dan password sesuai pada data di database agar mendapatkan token.

#7 Konfigurasi Proteksi Route dengan jwt

Selanjutnya, mari kita buat proteksi middleware jwt auth. Caranya masuk ke folder app/Http/Middleware kemudian buat file baru dengan nama JwtMiddleware.php. Isi dengan codingan seperti berikut :

Jika sudah kembali lagi ke update file boostrap/app.php kemudian kita registerkan jwt.auth seperti berikut :

$app->routeMiddleware([
'jwt.auth' => App\Http\Middleware\JwtMiddleware::class,
]);

Selanjutnya balik ke file route, dan kita buat proteksi dengan cara seperti berikut :

$router->group(
['middleware' => 'jwt.auth'],
function() use ($router) {
$router->get('users', function() {
$users = \App\User::all();
return response()->json($users);
});
}
);

Pengaturan diatas tentu dapat kalian custom sesuai dengan keinginan. Anda juga dapat melemparkan response ke controller.

#8 Testing API

Selanjutnya lakukan percobaan pada postman dan inputkan url

http://localhost:8080/users

Jika anda belum memasukkan token maka akan muncul pesan kesalahan

Token Not Provided

Jika anda masukkan token yang didapat dari login, maka akan muncul seluruh data user yang ada dalam database anda dalam format json.

Jika sudah demikian artinya proses pembuatan token sudah berhasil. Dibawah saya lampirkan juga kesalahan — kesalahan yang mungkin terjadi selama proses pembuatan. Jika anda memiliki masalah yang berbeda silahkan lemparkan komentar dan mari kita selesaikan bersama.

ERROR REPORTING

Berikut adalah kumpulan error atau kesalahan yang terjadi selama proses pembuatan yang dapat anda gunakan sebagai referensi. Jika ada error baru silahkan anda berkomentar dan mari kita cari bersama.

#1 In DatabaseSeeder.php — Class ‘User’ not found

  • Pesan kesalahan ini terjadi dikarenakan model yang anda gunakan tidak tersedia. Pastikan anda tidak typo dalam menuliskan model. Misal,
use App\User;public function run()
{
// $this->call('UsersTableSeeder');
User::unguard();
$this->call(UsersTableSeeder::class);
User::reguard();
}
  • Artinya model yang saya gunakan adalah User. pastikan juga anda sudah mengimportkan model User dengan perintah “use App\User “

#2 Agrument 2 passed to Tymon\JWTAuth\JWTGuard::__contruct() must …

  • Pesan kesalahan ini muncul ketika Anda menggunakan postman dan mencoba menampilkan data yang telah diproteksi. Kesalahan ini terjadi dikarenakan ada masalah konfigurasi yang perlu ditambahkan yaitu pada vendor\laravel\lumen-framework\config\auth.php.
  • Buka file tersebut kemudian tambahkan konfigurasi seperti berikut :
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
]
],
  • Biasanya pesan kesalahan itu diikuti oleh masalah lain seperti pada nomor 3.

#3 Method Illminate\Auth\REquestGuard::onceUsingId does not exist

  • Pesan kesalahan ini terjadi dikarenakan kita belum mengenalkan otentikasi jwt pada file auth.php di folder vendor\laravel\lumen-framework\config\auth.php. kesalahan ini dapat diatas dengan konfigurasi file seperti berikut :