dhzid.group/dgl-client
最新稳定版本:v1.0.2
Composer 安装命令:
composer require dhzid.group/dgl-client
包简介
Library for license client side.
README 文档
README
Paket Laravel untuk integrasi sistem lisensi dengan keamanan RSA. Memudahkan aplikasi Anda terhubung ke server lisensi untuk registrasi, validasi, dan manajemen lisensi secara otomatis.
Fitur Utama
- 🔐 Keamanan RSA: Tanda tangan digital per-klien (private key tetap di sisi Anda)
- ⚡ Auto-generate Keys: Library otomatis membuat key pair jika belum ada
- 🔄 Dual Flow: Dukung registrasi langsung atau klaim token undangan
- 🛡️ Anti-replay: Proteksi terhadap serangan replay dengan timestamp
- 📦 Siap Produksi: Penyimpanan terenkripsi, scheduler, dan middleware proteksi
Instalasi
1. Install via Composer
composer require dhzid-group/dgl-client
2. Publish Assets
php artisan vendor:publish --tag=license-config php artisan vendor:publish --tag=license-migrations php artisan vendor:publish --tag=license-views
3. Jalankan Migrasi
php artisan migrate
4. Konfigurasi Environment
Tambahkan ke file .env:
# URL server lisensi (sertakan /api) LICENSE_SERVER_URL=http://license-management.test/api # Private key RSA (opsional - library auto-generate jika kosong) LICENSE_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n # Atau path ke file private key LICENSE_PRIVATE_KEY_PATH=/absolute/path/to/private.key # Enkripsi lokal (opsional) LICENSE_ENCRYPTION_KEY=your-encryption-key LICENSE_ENCRYPTION_IV=your-encryption-iv # Scheduler untuk cek berkala LICENSE_SCHEDULER_ENABLED=true LICENSE_SCHEDULE_FREQUENCY=hourly # Domain aplikasi (opsional - auto-detect jika kosong) APP_DOMAIN=yourapp.test
Cara Penggunaan
Opsi 1: Registrasi Langsung
- Buka halaman registrasi:
GET /license/register - Isi data customer dan produk
- Library otomatis generate key pair dan kirim ke server
- Setelah sukses, halaman verifikasi akan cek aktivasi sampai lisensi valid
Opsi 2: Klaim Token Undangan (Pola A)
- Terima tautan dari admin:
https://yourapp.com/license/claim?token=abc123... - Buka halaman claim:
GET /license/claim - Library auto-generate key pair dan kirim public key ke server
- Setelah claim sukses, lanjut ke verifikasi lisensi
Programatik
use DhzidGroup\DglClient\Libraries\LicenseClient; // Registrasi lisensi $client = new LicenseClient(); $success = $client->registerLicense([ 'customer_name' => 'John Doe', 'customer_email' => 'john@example.com', 'customer_whatsapp' => '08123456789', 'customer_address' => 'Jl. Merdeka 1', 'product_slug' => 'my-product', 'license_subscription' => 30, 'domain' => 'yourapp.test', ]); if ($success) { // Verifikasi aktivasi $active = $client->verifyActivation(); if ($active) { echo "Lisensi aktif!"; } }
Rute yang Tersedia
GET /license/register- Form registrasiPOST /license/register- Proses registrasiGET /license/claim- Form klaim tokenPOST /license/claim- Proses klaim public keyPOST /license/verify- Polling verifikasi status
Middleware Proteksi
Tambahkan middleware ke rute yang perlu lisensi:
Route::middleware('license')->group(function () { Route::get('/dashboard', 'DashboardController@index'); // Rute lain yang memerlukan lisensi });
Keamanan
- Private Key: Disimpan di
storage/app/license/private.key(permission 600) - Public Key: Dikirim ke server saat registrasi/claim
- Signature: Header
X-Signature= Base64 RSA-SHA256 - Anti-replay: Timestamp dengan toleransi ±5 menit
Checklist Produksi
- Folder
storage/app/licensetidak dapat diakses publik - Permission file private key ketat (600)
- URL server lisensi menggunakan HTTPS
- Scheduler aktif:
* * * * * php /path/to/artisan schedule:run - Database sudah dimigrasi
- Environment variables terkonfigurasi
Troubleshooting
Error "Invalid signature"
- Pastikan private key valid
- Biarkan library auto-generate jika belum ada
- Cek permission file private key
Error "Request expired"
- Periksa sinkronisasi waktu server
- Pastikan timestamp dalam toleransi ±5 menit
Error "Gagal claim/registrasi"
- Cek token undangan masih valid
- Pastikan rate limit server tidak terlampaui
- Verifikasi format public key (PEM)
Error "Gagal simpan lisensi"
- Jalankan
php artisan migrate - Cek permission folder storage
Support
Untuk bantuan lebih lanjut, silakan buka issue di repository GitHub atau hubungi tim support.
Lisensi
MIT License
统计信息
- 总下载量: 20
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-08-17