Changeset 05665bc in Klonkt for src/config


Ignore:
Timestamp:
07/25/2026 06:25:15 AM (7 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
28267519
Parents:
c1f5c23
Message:

Guardian 2: losse guardians via uitnodiging (guardian-only accounts)

Stap 1 van het uitbouwplan op /guardian2. Een familie nodigt oma uit met een
link; zij kiest naam + wachtwoord en heeft daarmee een guardian-only account:
user + minimale site met guardian_only=1. Omdat alles in Klonkt al per slug
werkt (actor, WebFinger, inbox, offers, push, deze PWA) is zij daarmee meteen
een volwaardige guardian-actor, zonder CMS eromheen.

Changed files:
src/config/database.js

  • sites.guardian_only vlag; tabel ap_guardian_invites (token, eenmalig)

src/routes/guardian2.js

  • POST /invite (link minten, ingelogd), GET/POST /join/:token (naam+wachtwoord, user+site aanmaken, sessie, redirect naar de PWA)

src/views/pages/guardian2.ejs

  • Invite a guardian-knop in de header

remarks: npm test 164/164; join met ongeldig token geeft 404. Nog te doen op v2:
guardian-only sites uit listings houden, push per account, meekijken/follow-
goedkeuring.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/config/database.js

    rc1f5c23 r05665bc  
    3838  // SQLite throws if the column already exists; we swallow that.
    3939  ensureColumn('sites', 'enable_audio_player', 'INTEGER DEFAULT 1');
     40  // Guardian 2: losse guardians. Een guardian-only account is user + minimale
     41  // site (alleen de actor telt); de vlag houdt CMS/listings erbuiten.
     42  ensureColumn('sites', 'guardian_only', 'INTEGER DEFAULT 0');
     43  db.exec(`CREATE TABLE IF NOT EXISTS ap_guardian_invites (
     44    token TEXT PRIMARY KEY,
     45    created_by TEXT NOT NULL,
     46    created_at TEXT DEFAULT CURRENT_TIMESTAMP,
     47    used_by TEXT,
     48    used_at TEXT
     49  )`);
    4050  ensureColumn('sites', 'profile_photo', 'TEXT');
    4151  ensureColumn('audio_tracks', 'cover_url', 'TEXT');
Note: See TracChangeset for help on using the changeset viewer.