Laravel Licensing: управление лицензиями в Laravel

В экосистеме Laravel появился пакет для управления лицензиями приложений. Он ориентирован на сценарии с активацией, ограничением использования и офлайн-проверкой.

Пакет поддерживает привязку лицензий к различным моделям, контроль количества пользователей или устройств, а также криптографическую проверку через подписанные токены.

Установка и настройка

Пакет устанавливается через Composer:

composer require masterix21/laravel-licensing

После установки публикуются конфигурация и миграции:

php artisan vendor:publish --provider="LucaLongo\Licensing\LicensingServiceProvider"

Затем выполняются миграции базы данных:

php artisan migrate

Для работы с криптографией необходимо сгенерировать корневой ключ:

php artisan licensing:keys:make-root

Ключи шифруются с использованием passphrase, которая задается через переменную окружения LICENSING_KEY_PASSPHRASE.

Активация лицензии и регистрация устройства

После создания лицензии её можно активировать и привязать к устройству:

$license->activate();

Регистрация устройства выполняется через фасад:

use LucaLongo\Licensing\Facades\Licensing;

$usage = Licensing::register(
    $license, 
    'device-fingerprint-hash', 
    ['device_name' => 'MacBook Pro']
);

Выпуск офлайн-токена

Пакет позволяет генерировать токены для офлайн-проверки лицензии:

$token = Licensing::issueToken($license, $usage, [
    'ttl_days' => 7,
]);

Токен содержит подпись и может использоваться без обращения к серверу.

Проверка лицензии

Для проверки доступности лицензии используются методы модели:

if ($license->isUsable()) {
    $remainingDays = $license->daysUntilExpiration();
    $availableSeats = $license->getAvailableSeats();
}

Это позволяет контролировать срок действия и количество доступных мест.

Работа с лицензионными ключами

Пакет предоставляет методы для управления ключами лицензий:

// Получение оригинального ключа
$originalKey = $license->retrieveKey();

// Проверка возможности получения ключа
if ($license->canRetrieveKey()) {
    $key = $license->retrieveKey();
}

// Генерация нового ключа
if ($license->canRegenerateKey()) {
    $newKey = $license->regenerateKey();
}

// Проверка ключа
$isValid = $license->verifyKey($providedKey);

// Поиск лицензии по ключу
$license = License::findByKey($licenseKey);

Поддерживается отзыв и перевыпуск ключей, при этом старые ключи становятся недействительными.

Возможности пакета

Пакет поддерживает офлайн-валидацию через подписанные токены, ограничение количества устройств или пользователей, а также гибкую конфигурацию через контракты и конфиги.

Архитектура позволяет использовать лицензирование для разных типов продуктов внутри одного приложения.

Комментарии (0)

Войдите, чтобы оставить комментарий

Похожие статьи

Распространённые ошибки производительности в Laravel и простые способы их устранения

Практическое руководство по распространённым ошибкам производительности в Laravel и простым способам их устранения. Разбор N+1-запросов, кэширования, оптимизации выборок и других типичных проблем.

Декодирование JSON из HTTP-ответов в Laravel

Как Laravel обрабатываются JSON-ответы HTTP-клиента и какие возможности дают флаги декодирования JSON. Рассматриваются ошибки декодирования, работа с большими числами и настройка флагов по умолчанию.

Как отключить SELinux на Ubuntu, CentOS, Debian и RHEL

Подробная инструкция по проверке, временной и постоянной деактивации SELinux на популярных Linux-дистрибутивах: Ubuntu, Debian, CentOS и RHEL. Объяснены способы через консоль и конфигурационные файлы.