PHPackages                             dhzid.group/dgl-client - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. dhzid.group/dgl-client

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

dhzid.group/dgl-client
======================

Library for license client side.

v1.0.2(9mo ago)020MITPHP

Since Aug 19Pushed 9mo agoCompare

[ Source](https://github.com/dhzid-group/dgl-client-side)[ Packagist](https://packagist.org/packages/dhzid.group/dgl-client)[ RSS](/packages/dhzidgroup-dgl-client/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (3)DependenciesVersions (4)Used By (0)

DGL License Client
==================

[](#dgl-license-client)

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
-----------

[](#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
---------

[](#instalasi)

### 1. Install via Composer

[](#1-install-via-composer)

```
composer require dhzid-group/dgl-client
```

### 2. Publish Assets

[](#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

[](#3-jalankan-migrasi)

```
php artisan migrate
```

### 4. Konfigurasi Environment

[](#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
---------------

[](#cara-penggunaan)

### Opsi 1: Registrasi Langsung

[](#opsi-1-registrasi-langsung)

1. Buka halaman registrasi: `GET /license/register`
2. Isi data customer dan produk
3. Library otomatis generate key pair dan kirim ke server
4. Setelah sukses, halaman verifikasi akan cek aktivasi sampai lisensi valid

### Opsi 2: Klaim Token Undangan (Pola A)

[](#opsi-2-klaim-token-undangan-pola-a)

1. Terima tautan dari admin: `https://yourapp.com/license/claim?token=abc123...`
2. Buka halaman claim: `GET /license/claim`
3. Library auto-generate key pair dan kirim public key ke server
4. Setelah claim sukses, lanjut ke verifikasi lisensi

### Programatik

[](#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
------------------

[](#rute-yang-tersedia)

- `GET /license/register` - Form registrasi
- `POST /license/register` - Proses registrasi
- `GET /license/claim` - Form klaim token
- `POST /license/claim` - Proses klaim public key
- `POST /license/verify` - Polling verifikasi status

Middleware Proteksi
-------------------

[](#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
--------

[](#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
------------------

[](#checklist-produksi)

- Folder `storage/app/license` tidak 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
---------------

[](#troubleshooting)

### Error "Invalid signature"

[](#error-invalid-signature)

- Pastikan private key valid
- Biarkan library auto-generate jika belum ada
- Cek permission file private key

### Error "Request expired"

[](#error-request-expired)

- Periksa sinkronisasi waktu server
- Pastikan timestamp dalam toleransi ±5 menit

### Error "Gagal claim/registrasi"

[](#error-gagal-claimregistrasi)

- Cek token undangan masih valid
- Pastikan rate limit server tidak terlampaui
- Verifikasi format public key (PEM)

### Error "Gagal simpan lisensi"

[](#error-gagal-simpan-lisensi)

- Jalankan `php artisan migrate`
- Cek permission folder storage

Support
-------

[](#support)

Untuk bantuan lebih lanjut, silakan buka issue di repository GitHub atau hubungi tim support.

Lisensi
-------

[](#lisensi)

MIT License

###  Health Score

29

—

LowBetter than 59% of packages

Maintenance58

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity38

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

272d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/3b0bd416a0b8b19c9af0c64920f66eea78b43c2ba0d6567c3ceaff3db7dce773?d=identicon)[dhzid-group](/maintainers/dhzid-group)

---

Top Contributors

[![dhzid-group](https://avatars.githubusercontent.com/u/140840057?v=4)](https://github.com/dhzid-group "dhzid-group (25 commits)")

### Embed Badge

![Health badge](/badges/dhzidgroup-dgl-client/health.svg)

```
[![Health](https://phpackages.com/badges/dhzidgroup-dgl-client/health.svg)](https://phpackages.com/packages/dhzidgroup-dgl-client)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
