Harden license cache: 10s TTL and skip incomplete subscription.created

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Lawrence Hook
2026-02-22 04:34:00 -05:00
parent d857ae8c26
commit 361a8caf84
2 changed files with 9 additions and 1 deletions
+5
View File
@@ -55,6 +55,11 @@ router.post('/stripe', async (req, res) => {
try { try {
const email = await getCustomerEmail(subscription.customer); const email = await getCustomerEmail(subscription.customer);
if (email) { if (email) {
// Skip non-active created events to avoid overwriting premium with incomplete status
if (!premium && event.type === 'customer.subscription.created') {
console.log(`[webhook] Subscription created: ${email} -> ${subscription.status} (skipped cache update)`);
break;
}
storage.setSubscriptionStatus(email, premium, subscription.customer); storage.setSubscriptionStatus(email, premium, subscription.customer);
console.log(`[webhook] Subscription ${action}: ${email} -> ${premium ? 'premium' : 'free'}`); console.log(`[webhook] Subscription ${action}: ${email} -> ${premium ? 'premium' : 'free'}`);
+4 -1
View File
@@ -78,7 +78,10 @@ function setSubscriptionStatus(email, premium, customerId) {
function getSubscriptionStatus(email) { function getSubscriptionStatus(email) {
const data = readSubscriptionFile(); const data = readSubscriptionFile();
return data[email.toLowerCase()] || null; const entry = data[email.toLowerCase()];
if (!entry) return null;
if (Date.now() - entry.updatedAt > 10000) return null;
return entry;
} }