Skip to content

Commit

Permalink
Lemon squeezy support and license key support (#3)
Browse files Browse the repository at this point in the history
* Add support for lemon squeezy

* Make license date fetched output in human readable format

* Added activation check

* Fix timestamp error
  • Loading branch information
jonerickson authored Nov 18, 2023
1 parent 593befc commit 6f0d461
Show file tree
Hide file tree
Showing 15 changed files with 331 additions and 4 deletions.
8 changes: 8 additions & 0 deletions composer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"require-dev": {
"laravel/pint": "^1.13"
},
"scripts": {
"lint": "./vendor/bin/pint src"
}
}
85 changes: 85 additions & 0 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions pint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"preset": "laravel",
"exclude": [
"data",
"dev",
"hooks",
"interface",
"setup"
]
}
6 changes: 6 additions & 0 deletions src/data/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@
<setting key="stripeverification_commerce_subscription"><![CDATA[{"key":"stripeverification_commerce_subscription","default":""}]]></setting>
<setting key="stripeverification_icon"><![CDATA[{"key":"stripeverification_icon","default":"fa fa-solid fa-circle-check"}]]></setting>
<setting key="stripeverification_icon_color"><![CDATA[{"key":"stripeverification_icon_color","default":"#1778f2"}]]></setting>
<setting key="stripeverification_license_activation_payload"><![CDATA[{"key":"stripeverification_license_activation_payload","default":""}]]></setting>
<setting key="stripeverification_license_fetched"><![CDATA[{"key":"stripeverification_license_fetched","default":""}]]></setting>
<setting key="stripeverification_license_instance"><![CDATA[{"key":"stripeverification_license_instance","default":""}]]></setting>
<setting key="stripeverification_license_key"><![CDATA[{"key":"stripeverification_license_key","default":""}]]></setting>
<setting key="stripeverification_license_status"><![CDATA[{"key":"stripeverification_license_status","default":""}]]></setting>
<setting key="stripeverification_license_status_payload"><![CDATA[{"key":"stripeverification_license_status_payload","default":""}]]></setting>
<setting key="stripeverification_publishable_key"><![CDATA[{"key":"stripeverification_publishable_key","default":""}]]></setting>
<setting key="stripeverification_secret_key"><![CDATA[{"key":"stripeverification_secret_key","default":""}]]></setting>
<setting key="stripeverification_verification_group"><![CDATA[{"key":"stripeverification_verification_group","default":""}]]></setting>
Expand Down
2 changes: 1 addition & 1 deletion src/data/javascript.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<javascript app="stripeverification">
<file javascript_app="stripeverification" javascript_location="front" javascript_path="controllers/verification" javascript_name="ips.verification.main.js" javascript_type="controller" javascript_version="10006" javascript_position="1000050"><![CDATA[;( function($, _, undefined){
<file javascript_app="stripeverification" javascript_location="front" javascript_path="controllers/verification" javascript_name="ips.verification.main.js" javascript_type="controller" javascript_version="10007" javascript_position="1000050"><![CDATA[;( function($, _, undefined){
"use strict";
ips.controller.register('stripeverification.front.verification.main', {
Expand Down
14 changes: 13 additions & 1 deletion src/data/lang.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<language>
<app key="stripeverification" version="10006">
<app key="stripeverification" version="10007">
<word key="__app_stripeverification" js="0">Stripe Identity Verification</word>
<word key="menutab__stripeverification" js="0">Stripe Verification</word>
<word key="menutab__stripeverification_icon" js="0">cc-stripe</word>
Expand All @@ -22,6 +22,18 @@
<word key="mailsub__stripeverification_notification_verified" js="0">Verified</word>
<word key="mailsub__stripeverification_notification_unverified" js="0">Unverified</word>
<word key="stripeverification_userbar" js="0">Verification Status</word>
<word key="stripeverification_license" js="0">License Settings</word>
<word key="stripeverification_license_key" js="0">License Key</word>
<word key="stripeverification_license_key_desc" js="0"><![CDATA[Your application license key. Manage your license keys at <a href="https://store.deschutesdesigngroup.com" target="_blank">https://store.deschutesdesigngroup.com</a>.]]></word>
<word key="stripeverification_license_error" js="0">Your license key is not valid or not active. Please update your license to keep using this product.</word>
<word key="stripeverification_license_refreshed" js="0">The license key data has been refreshed.</word>
<word key="stripeverification_license_data_message" js="0">The following information is useful in debugging your license key status. Do not change unless asked by support personnel.</word>
<word key="stripeverification_license_status" js="0">License Key Status</word>
<word key="stripeverification_license_fetched" js="0">License Key Data Last Fetched</word>
<word key="stripeverification_license_instance" js="0">License Key Instance ID</word>
<word key="stripeverification_license_status_payload" js="0">License Key Status Payload</word>
<word key="stripeverification_license_activation_payload" js="0">License Key Activation Payload</word>
<word key="stripeverification_debug" js="0">Debug Data</word>
<word key="stripeverification_stripe_settings_tab" js="0">Stripe</word>
<word key="stripeverification_stripe_settings" js="0">Stripe Settings</word>
<word key="stripeverification_publishable_key" js="0">Publishable Key</word>
Expand Down
24 changes: 24 additions & 0 deletions src/data/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,30 @@
"key": "stripeverification_icon_color",
"default": "#1778f2"
},
{
"key": "stripeverification_license_activation_payload",
"default": ""
},
{
"key": "stripeverification_license_fetched",
"default": ""
},
{
"key": "stripeverification_license_instance",
"default": ""
},
{
"key": "stripeverification_license_key",
"default": ""
},
{
"key": "stripeverification_license_status",
"default": ""
},
{
"key": "stripeverification_license_status_payload",
"default": ""
},
{
"key": "stripeverification_publishable_key",
"default": ""
Expand Down
3 changes: 2 additions & 1 deletion src/data/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@
"10003": "1.0.3",
"10004": "1.0.4",
"10005": "1.0.5",
"10006": "1.0.6"
"10006": "1.0.6",
"10007": "1.0.7"
}
12 changes: 12 additions & 0 deletions src/dev/lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,18 @@

'stripeverification_userbar' => 'Verification Status',

'stripeverification_license' => 'License Settings',
'stripeverification_license_key' => 'License Key',
'stripeverification_license_key_desc' => 'Your application license key. Manage your license keys at <a href="https://store.deschutesdesigngroup.com" target="_blank">https://store.deschutesdesigngroup.com</a>.',
'stripeverification_license_error' => 'Your license key is not valid or not active. Please update your license to keep using this product.',
'stripeverification_license_refreshed' => 'The license key data has been refreshed.',
'stripeverification_license_data_message' => 'The following information is useful in debugging your license key status. Do not change unless asked by support personnel.',
'stripeverification_license_status' => 'License Key Status',
'stripeverification_license_fetched' => 'License Key Data Last Fetched',
'stripeverification_license_instance' => 'License Key Instance ID',
'stripeverification_license_status_payload' => 'License Key Status Payload',
'stripeverification_license_activation_payload' => 'License Key Activation Payload',
'stripeverification_debug' => 'Debug Data',
'stripeverification_stripe_settings_tab' => 'Stripe',
'stripeverification_stripe_settings' => 'Stripe Settings',

Expand Down
2 changes: 1 addition & 1 deletion src/hooks/Member.php
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ public function get_verification_processing()
*/
public function get_verified()
{
$verified = (bool) $this->verification?->verified;
$verified = $this->verification?->verified && \IPS\stripeverification\Manager\LicenseKey::i()->isValid();

if (\IPS\Application::appIsEnabled('nexus') && \IPS\Settings::i()->stripeverification_commerce_enabled) {
$verified = $verified && $this->verification_subscription;
Expand Down
20 changes: 20 additions & 0 deletions src/modules/admin/system/settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@

namespace IPS\stripeverification\modules\admin\system;

use IPS\Helpers\Form\Codemirror;
use IPS\Helpers\Form\Text;
use IPS\Helpers\Form\YesNo;
use IPS\Settings;
use IPS\stripeverification\Manager\LicenseKey;

/* To prevent PHP errors (extending class does not exist) revealing path */
if (! \defined('\IPS\SUITE_UNIQUE_KEY')) {
header((isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0').' 403 Forbidden');
Expand Down Expand Up @@ -38,6 +44,12 @@ protected function manage()
$groups[$group->g_id] = $group->name;
}

$form->addTab('stripeverification_license');
if (! LicenseKey::i()->isValid()) {
$form->addMessage('stripeverification_license_error', ' ipsMessage ipsMessage_error ipsType_reset ipsSpacer_top');
}
$form->add(new Text('stripeverification_license_key', Settings::i()->stripeverification_license_key, true));

$form->addTab('stripeverification_stripe_settings_tab');
$form->addHeader(\IPS\Member::loggedIn()->language()->addToStack('stripeverification_stripe_settings'));
$form->add(new \IPS\Helpers\Form\Text('stripeverification_publishable_key', \IPS\Settings::i()->stripeverification_publishable_key, true));
Expand Down Expand Up @@ -65,6 +77,14 @@ protected function manage()
]));
}

$form->addTab('stripeverification_debug');
$form->addMessage('stripeverification_license_data_message');
$form->add(new YesNo('stripeverification_license_status', Settings::i()->stripeverification_license_status, false, ['disabled' => true]));
$form->add(new Text('stripeverification_license_fetched', Settings::i()->stripeverification_license_fetched ? date('m/d/Y', (int) Settings::i()->stripeverification_license_fetched) : null, false, ['disabled' => true]));
$form->add(new Text('stripeverification_license_instance', Settings::i()->stripeverification_license_instance, false));
$form->add(new Codemirror('stripeverification_license_status_payload', json_encode(json_decode(Settings::i()->stripeverification_license_status_payload), JSON_PRETTY_PRINT), false, ['disabled' => true, 'mode' => 'json']));
$form->add(new Codemirror('stripeverification_license_activation_payload', json_encode(json_decode(Settings::i()->stripeverification_license_activation_payload), JSON_PRETTY_PRINT), false, ['disabled' => true, 'mode' => 'json']));

if ($form->values()) {
$form->saveAsSettings();
}
Expand Down
23 changes: 23 additions & 0 deletions src/setup/upg_10007/data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"id": 10007,
"name": "1.0.7",
"steps": {
"queries": false,
"lang": true,
"theme": false,
"themeSettings": false,
"javascript": false,
"emailTemplates": false,
"hooks": false,
"acpSearchKeywords": false,
"settings": true,
"tasks": false,
"modules": false,
"widgets": false,
"customOptions": false,
"customRoutines": false
},
"forceMainUpgrader": false,
"forceManualDownloadNoCiC": false,
"forceManualDownloadCiC": false
}
25 changes: 25 additions & 0 deletions src/setup/upg_10007/lang.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"normal": {
"added": [
"stripeverification_license",
"stripeverification_license_key",
"stripeverification_license_key_desc",
"stripeverification_license_error",
"stripeverification_license_refreshed",
"stripeverification_license_data_message",
"stripeverification_license_status",
"stripeverification_license_fetched",
"stripeverification_license_instance",
"stripeverification_license_status_payload",
"stripeverification_license_activation_payload",
"stripeverification_debug"
],
"edited": [],
"removed": []
},
"js": {
"added": [],
"edited": [],
"removed": []
}
}
12 changes: 12 additions & 0 deletions src/setup/upg_10007/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"added": [
"stripeverification_license_activation_payload",
"stripeverification_license_fetched",
"stripeverification_license_instance",
"stripeverification_license_key",
"stripeverification_license_status",
"stripeverification_license_status_payload"
],
"edited": [],
"removed": []
}
Loading

0 comments on commit 6f0d461

Please sign in to comment.