Changeset 029f047 in Klonkt for src/routes/admin-settings.js


Ignore:
Timestamp:
06/16/2026 10:30:37 AM (3 months ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
e9229f2
Parents:
d549549
Message:

Phase 2: Hub mode behind premium gate (premiumUnlocked)

Switching to Hub requires premium to be unlocked. UI: Hub radio locked +
"premium" label when premium is on without Patreon. Server: POST rejects
→hub if not unlocked (staying on hub is always allowed, no lock-in).
Premium off (default) = freely selectable, demos unchanged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/admin-settings.js

    rd549549 r029f047  
    2222import { requireGod } from '../middleware/auth.js';
    2323import { getTenancy, setTenancy, getSetting, setSetting } from '../services/SettingsService.js';
    24 import { entitlementStatus } from '../services/PatreonService.js';
     24import { entitlementStatus, premiumUnlocked } from '../services/PatreonService.js';
    2525
    2626const router = express.Router();
     
    9090
    9191    if (typeof req.body.tenancy !== 'undefined') {
     92      // Hub-modus is een premium-feature: alleen naar hub schakelen als premium
     93      // ontgrendeld is (premium-laag uit = vrij; aan = Patreon vereist). Al-hub
     94      // blijven mag altijd, zodat een instance nooit vastloopt.
     95      if (req.body.tenancy === 'hub' && !premiumUnlocked() && getTenancy() !== 'hub') {
     96        return res.redirect('/admin/settings?error=' + encodeURIComponent('Hub-modus is een premium-functie — koppel Patreon in Beheer → Instellingen.'));
     97      }
    9298      setTenancy(req.body.tenancy); // valideert naar solo | hub | circle
    9399    }
Note: See TracChangeset for help on using the changeset viewer.