ptpn/ion-client
Composer 安装命令:
composer require ptpn/ion-client
包简介
Official PHP/Laravel client SDK for ION SSO API v2
README 文档
README
Official PHP/Laravel client SDK untuk mengonsumsi API ION SSO v2.
Fitur
- Dukungan Laravel 8, 9, 10, 11, dan 12.
- PHP 7.3+ dan PHP 8.x.
- Menggunakan GuzzleHTTP sebagai HTTP client.
- Laravel package auto-discovery.
- Facade
IonClientsiap pakai. - Config publishable.
- Custom exception
IonClientException.
Instalasi
Install package melalui Composer:
composer require ptpn/ion-client
Konfigurasi
Publish file konfigurasi ke project Laravel:
php artisan vendor:publish --tag=ion-client-config
Setelah dipublish, file config/ion-client.php akan tersedia. Tambahkan environment variables berikut di .env:
ION_BASE_URL=https://ion.palmco.id/api/v2 ION_CLIENT_ID=your-client-id ION_CLIENT_SECRET=your-client-secret ION_TIMEOUT=30 ION_VERIFY_SSL=true
Penggunaan
Menggunakan Facade
use IonClient; // Login user $response = IonClient::login('johndoe', 'secret123'); $sessionId = $response['session_id']; // Cek session $session = IonClient::checkSession($sessionId); // Verifikasi auth code $user = IonClient::verify('AUTH_CODE_HERE'); // Ambil data session lengkap $fullInfo = IonClient::getSessionFullInfo($sessionId); // Ambil role user untuk aplikasi tertentu $roles = IonClient::getUserRoles($sessionId, 'hris'); // Heartbeat agar session tetap aktif IonClient::heartbeat($sessionId); // Logout user IonClient::logout($sessionId);
Menggunakan Dependency Injection
use Ptpn\IonClient\IonClient; class AuthController extends Controller { protected $ion; public function __construct(IonClient $ion) { $this->ion = $ion; } public function login(Request $request) { try { $data = $this->ion->login( $request->input('username'), $request->input('password') ); return response()->json($data); } catch (\Ptpn\IonClient\Exceptions\IonClientException $e) { return response()->json(['error' => $e->getMessage()], 401); } } }
Daftar Method
| Method | Endpoint | Deskripsi |
|---|---|---|
login($username, $password) |
POST /auth/login |
Login dengan username dan password. |
checkSession($sessionId) |
GET /auth/check-session |
Cek apakah session SSO masih aktif. |
verify($code) |
POST /auth/verify |
Tukar auth code menjadi session ID + data user. |
getSessionFullInfo($sessionId) |
POST /client/session/full-info |
Ambil data session lengkap. |
getUserRoles($sessionId, $application) |
POST /client/user/roles |
Ambil daftar role user untuk app tertentu. |
heartbeat($sessionId) |
POST /client/heartbeat |
Pertahankan session tetap aktif. |
logout($sessionId) |
POST /client/logout |
Logout user session. |
Setiap request akan otomatis menyertakan header wajib:
X-Client-IDX-Client-SecretX-Timestamp
Penanganan Error
Semua error HTTP maupun error dari response ION akan dilempar sebagai Ptpn\IonClient\Exceptions\IonClientException. Pesan error akan diambil dari field message atau error pada response JSON ION jika tersedia.
use Ptpn\IonClient\Exceptions\IonClientException; try { $user = IonClient::login('johndoe', 'wrong-password'); } catch (IonClientException $e) { // $e->getMessage() berisi pesan error dari ION logger()->error($e->getMessage()); }
Testing
Jalankan PHPUnit setelah menginstall dependency:
composer install vendor/bin/phpunit
Publish ke Packagist
- Buat repository baru di GitHub:
https://github.com/ptpn/ion-client. - Push kode package ke repository tersebut.
- Login ke Packagist.
- Klik Submit dan masukkan URL repository GitHub.
- Packagist akan membaca
composer.jsondan membuat packageptpn/ion-client. - (Opsional) Aktifkan webhook GitHub ke Packagist agar setiap tag/release otomatis diupdate.
License
Package ini dirilis di bawah lisensi MIT.
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 2
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-17