Changeset 72ec6a4 in Klonkt for src/middleware/site.js


Ignore:
Timestamp:
07/31/2026 06:55:59 PM (6 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
17546af
Parents:
bfa6fa1
Message:

Hub-modus en guardian-lite eruit

Robins besluit (31-7): een instance is een eigenaar. Twee dingen weg.

HUB-MODUS was al dood: getTenancy() gaf sinds 24-6 hardcoded 'solo'
terug, dus elke tenancy === 'hub'-tak was onbereikbaar. Nu ook echt
verwijderd: getTenancy/setTenancy zelf, de /user/:slug-routing in
resolveSite, de hub-takken in admin, zoeken, audio, posts (neighbours
en related over alle sites), download, en de push-prefix. In de views
verdwijnen de hub-tagline, de hub-navigatie, de sites- en
users-tabellen (die kwamen alleen in hub-modus gevuld en verwezen nu
naar locals die niemand meer meegeeft), de eigenaar-toewijzing bij een
site, de /user/-slugprefix, het hub-brandblok en de hub-thuisknop.

GUARDIAN-LITE was de laatste multi-user-rest: /guardian/invite gaf een
link waarmee iemand via /guardian/join een echte user plus een site met
guardian_only=1 aanmaakte. Dat zette andermans wachtwoordhash, sessie
en PRIVATE actor-sleutel in jouw database, waardoor een verhuizing of
export nooit netjes kon (shaer-qw6q). Routes, formulier, kolom en
uitnodigingstabel zijn weg. Het guardian-DASHBOARD blijft: dat is
FEP-633c en werkt voor guardians met een eigen Klonkt. Bestaande
installaties houden kolom en tabel ongebruikt; nieuwe krijgen ze niet.

Changed files:
src/services/SettingsService.js

  • getTenancy/setTenancy verwijderd; kop herschreven

src/middleware/site.js, src/middleware/render.js

  • /user/:slug-routing weg; tenancy en hubTitle uit de locals

src/routes/admin.js, admin-settings.js, audio.js, download.js,
src/routes/posts.js, search.js

  • hub-takken en hub-queries weg; postNeighbors zonder isHub

src/services/ActivityPubService.js

  • pushPrefix is nu gewoon ; getTenancy-import weg

src/routes/guardian.js

  • /invite en /join verwijderd (dashboard blijft), imports opgeschoond

src/config/database.js

  • guardian_only-kolom en ap_guardian_invites-tabel niet meer aangemaakt

src/views/pages/admin.ejs, admin-users.ejs, admin-site-edit.ejs,
src/views/pages/guardian.ejs, partials/topnav.ejs, chrome.ejs, bottom-tab.ejs

  • alle hub-takken en de uitnodigingsknop weg

remarks: 320 regels weg, 63 erbij. Suite 372 groen; alle 85 templates
compileren; en met een wegwerp-kopie van de database daadwerkelijk
gedraaid en ingelogd: /, /admin, /admin/users, /admin/sites,
/admin/settings, /admin/sites/demo/edit, /admin/media en /guardian
geven alle 200 zonder fouten in het log, en /guardian/invite en
/guardian/join geven nu 404.

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/middleware/site.js

    rbfa6fa1 r72ec6a4  
    1010
    1111import db from '../config/database.js';
    12 import { getTenancy } from '../services/SettingsService.js';
    1312import { audioUrl } from '../services/AudioStreamService.js';
    1413import { audioEnabled } from '../config/features.js';
     
    2726
    2827export function resolveSite(req, res, next) {
    29   const tenancy = getTenancy();
    30   res.locals.tenancy = tenancy; // also available in views
    31 
    32   // In HUB mode /user/:slug maps to a specific site. In SOLO mode there is only
    33   // one site: we skip that routing and pin to the primary site.
    34   if (tenancy === 'hub') {
    35     // A Klonkt site is canonically reachable via /user/:slug. /sites/:slug is a
    36     // legacy alias → 301 to the canonical form so one URL scheme remains
    37     // (preserves path + query string; does NOT touch /admin/sites, which starts with /admin/).
    38     const m = req.path.match(/^\/(sites|user)\/([a-zA-Z0-9_-]+)(\/.*)?$/);
    39     if (m) {
    40       if (m[1] === 'sites') {
    41         return res.redirect(301, req.originalUrl.replace(/^\/sites\//, '/user/'));
    42       }
    43       const site = db.prepare('SELECT * FROM sites WHERE slug = ?').get(m[2]);
    44       if (site) {
    45         res.locals.site = site;
    46         req.url = (m[3] || '/'); // strip /user/:slug zodat downstream de rest ziet
    47         res.locals.siteUrlBase = `/user/${m[2]}`;
    48         return next();
    49       }
    50     }
    51     // (Removed: a dead "slug == hostname" subdomain hack. Slugs may not contain
    52     // dots, so it could never match. Real subdomain routing would match the
    53     // subdomain LABEL against the slug — a separate feature, not this.)
    54   }
    55 
    56   // Solo (or hub without a match): pin to the primary/main site.
     28  // One instance is one owner (Robins besluit, 31-7): there is one site tree,
     29  // pinned to the primary site. The /user/:slug routing that hub mode needed
     30  // is gone with it.
    5731  const defaultSite = getPrimarySite();
    5832  if (defaultSite) {
Note: See TracChangeset for help on using the changeset viewer.