ptpn/ion-client 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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.

Latest Version on Packagist License

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 IonClient siap 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-ID
  • X-Client-Secret
  • X-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

  1. Buat repository baru di GitHub: https://github.com/ptpn/ion-client.
  2. Push kode package ke repository tersebut.
  3. Login ke Packagist.
  4. Klik Submit dan masukkan URL repository GitHub.
  5. Packagist akan membaca composer.json dan membuat package ptpn/ion-client.
  6. (Opsional) Aktifkan webhook GitHub ke Packagist agar setiap tag/release otomatis diupdate.

License

Package ini dirilis di bawah lisensi MIT.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-17

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固