jundayw / passport
A lightweight and scalable PHP API request verification and response signature extension package.
Requires
- php: ^8.0
Requires (Dev)
- code-lts/doctum: ^5.0
This package is auto-updated.
Last update: 2026-03-23 11:43:47 UTC
README
Laravel Passport
A lightweight and scalable PHP API request verification and response signature extension package.
Table of Contents
Installation
You can install the package via Composer:
composer require jundayw/passport
Publish Resources
Your users can also publish all publishable files defined by your package's service provider using the --provider flag:
php artisan vendor:publish --provider="Jundayw\Passport\PassportServiceProvider"
You may wish to publish only the configuration files:
php artisan vendor:publish --tag=passport-config
You may wish to publish only the migration files:
php artisan vendor:publish --tag=passport-migrations
Run Migrations
php artisan migrate --path=database/migrations/2026_03_01_000000_create_passport_table.php
Usage
Passport
$appId = '202603161735'; $appSecret = '2f7b50c39cb5f4cf061b0ea433634287';
Verification
use Jundayw\Passport\Facades\Passport; $passport = Passport::payload(['foo' => 'bar']); // $passport->payload($request->header()); // $passport->payload($request->query()); // $passport->payload($request->post()); $passport->payload(['signature' => '51864429c137b125833e8969649e8371a97b61af875ddd09366676e7df236966']); $passport->check($appId, 'sha256', 'signature', 'hash_hmac'); // true
Signature
use Jundayw\Passport\Facades\Passport; $passport = Passport::payload(['foo' => 'bar']); // $passport->payload(['signature' => null]); $passport->signature($appId, 'sha256', 'signature', 'hash_hmac'); // 51864429c137b125833e8969649e8371a97b61af875ddd09366676e7df236966 $passport->withSignature($appId, 'sha256', 'signature', 'hash_hmac')->getPayload(); // [ // 'foo' => 'bar', // 'signature' => '51864429c137b125833e8969649e8371a97b61af875ddd09366676e7df236966', // ];
Extended custom signature
use Jundayw\Passport\Contracts\Signer; use Jundayw\Passport\Facades\Passport; Passport::extend('AES', function () { return new class implements Signer { public function sign(string $algo, array $data, string $secret): string { // TODO: Implement sign() method. } public function verify(string $algo, array $data, string $sign, string $secret): bool { // TODO: Implement verify() method. } }; }); $passport = Passport::payload($request->post()); $passport->check($appId, 'AES-256-CBC', 'signature', 'AES'); // bool
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Contributors
Thanks goes to these wonderful people:
Contributions of any kind are welcome!
License
Distributed under the MIT License (MIT). Please see License File for more information.