Changeset e215090 in Klonkt for src/routes/activitypub.js


Ignore:
Timestamp:
08/10/2026 05:38:55 PM (4 weeks ago)
Author:
Robin <roboburr@…>
Branches:
main
Children:
383e897
Parents:
21ef238
Message:

Het verschil draagt ook de rechten

Zonder dit valt de client bij elke verschil-lezing terug op zijn standaard
Caps, en die standaard is 'alles mag': een gesloten poort zou zichzelf stil
openzetten. Dezelfde reden waarom een 304 de caps met rust laat -- dat stond
er al, met de reden erbij, en dat gold hier net zo goed.

Het rechtenblok staat nu in capabilitiesOf() zodat beide lezingen hetzelfde
beschrijven. De pariteitstest leest de bron en wees naar de oude plek; die
wijst nu naar de functie.

862/862 groen.

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/routes/activitypub.js

    r21ef238 re215090  
    377377    },
    378378  };
     379}
     380
     381/** Wat deze lezer mag (FEP-633c 5.6), op EEN plek.
     382 *
     383 *  De verschil-lezing draagt ze net zo goed: een antwoord zonder rechten zou
     384 *  de client naar zijn standaard laten terugvallen, en die standaard is
     385 *  'alles mag'. Dan zet een gesloten poort zichzelf stil open. Dezelfde reden
     386 *  waarom een 304 de caps met rust laat.
     387 */
     388function capabilitiesOf(p, gate) {
     389  return {
     390      'shaer:externalEmbeds': p.embedsAllowed,
     391      'shaer:externalPlayback': p.playbackAllowed,
     392      // Leaving the app is the same decision as playing inside it: with the
     393      // gate shut a link is shown but not followed, so the door is closed too
     394      // and not just the picture over it.
     395      'shaer:externalLinks': p.playbackAllowed,
     396      // De rest van de familie (8-8): de app hoort VOORAF te weten wat hij mag
     397      // aanbieden in plaats van het bij de eerste weigering te ontdekken. De
     398      // (+) kaart leest shaer:compose al (Barts gate); de rest is er voor de
     399      // schermen die nog komen. Serveren wat waar is kost hier niets.
     400      'shaer:compose': p.composeAllowed,
     401      'shaer:replies': p.repliesAllowed,
     402      'shaer:messages': p.messagesAllowed,
     403      'shaer:images': p.imagesAllowed,
     404      'shaer:music': p.musicAllowed,
     405      'shaer:quoteCards': p.quotesAllowed,
     406      'shaer:customEmoji': p.emojiAllowed,
     407      'shaer:externalThreads': p.threadsAllowed,
     408      'shaer:following': p.followingAllowed,
     409      // Stond in de catalogus mét kolom, en ontbrak hier: de guardian zag de
     410      // poort in zijn paneel en de app van het kind heeft er nooit van gehoord.
     411      // Gevonden door de pariteitstest, niet door iemand die het toevallig zag.
     412      'shaer:accountMove': gate('gate_account_move'),
     413    };
    379414}
    380415
     
    780815      partOf: `${base}/ap/users/${auth.site.slug}/inbox`,
    781816      orderedItems: items,
     817      // De rechten gaan MEE. Zonder dit valt de client terug op zijn standaard,
     818      // en die standaard is 'alles mag' -- dan zet een gesloten poort zichzelf
     819      // stil open bij elke verschil-lezing. Dezelfde reden waarom een 304 de
     820      // caps met rust laat.
     821      'shaer:capabilities': capabilitiesOf(P, gate),
    782822      'shaer:cursor': AP.feedCursor(auth.site.slug),
    783823    }, 'private, no-store');
     
    832872    // by construction, and never on the public actor document: it says
    833873    // something about a child, and only the child and its guardians need it.
    834     'shaer:capabilities': {
    835       'shaer:externalEmbeds': embedsAllowed,
    836       'shaer:externalPlayback': playbackAllowed,
    837       // Leaving the app is the same decision as playing inside it: with the
    838       // gate shut a link is shown but not followed, so the door is closed too
    839       // and not just the picture over it.
    840       'shaer:externalLinks': playbackAllowed,
    841       // De rest van de familie (8-8): de app hoort VOORAF te weten wat hij mag
    842       // aanbieden in plaats van het bij de eerste weigering te ontdekken. De
    843       // (+) kaart leest shaer:compose al (Barts gate); de rest is er voor de
    844       // schermen die nog komen. Serveren wat waar is kost hier niets.
    845       'shaer:compose': composeAllowed,
    846       'shaer:replies': repliesAllowed,
    847       'shaer:messages': messagesAllowed,
    848       'shaer:images': imagesAllowed,
    849       'shaer:music': musicAllowed,
    850       'shaer:quoteCards': quotesAllowed,
    851       'shaer:customEmoji': emojiAllowed,
    852       'shaer:externalThreads': threadsAllowed,
    853       'shaer:following': followingAllowed,
    854       // Stond in de catalogus mét kolom, en ontbrak hier: de guardian zag de
    855       // poort in zijn paneel en de app van het kind heeft er nooit van gehoord.
    856       // Gevonden door de pariteitstest, niet door iemand die het toevallig zag.
    857       'shaer:accountMove': gate('gate_account_move'),
    858     },
     874    'shaer:capabilities': capabilitiesOf(P, gate),
    859875    // Het merk van wat hierin zit. Geef hem terug als `since` om op het
    860876    // volgende te wachten. NA het samenstellen bepaald, zodat hij precies dekt
Note: See TracChangeset for help on using the changeset viewer.