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

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

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

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

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

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

Laravel получил встроенную поддержку Passkeys

Laravel получил встроенную поддержку passkeys через пакет laravel/passkeys. Новая реализация упрощает passwordless-аутентификацию на базе WebAuthn и поддерживает биометрию, аппаратные ключи и интеграцию с Fortify.

Работа с grep и регулярными выражениями в Linux

Подробное руководство по работе с grep и регулярными выражениями в Linux с примерами команд. Охватывает базовый синтаксис, расширенные возможности и практические сценарии использования.

4 полезных способа использования Array.map() в JavaScript

Разбираем четыре практических способа использования метода Array.map() в JavaScript: преобразование данных, работа со строками, генерация списков и трансформация объектов.