+21
-4
Diff
round #1
+13
-4
README.md
+13
-4
README.md
···
10
10
11
11
## How this works
12
12
13
-
Each linkage is a *pair of records* on atproto PDSes — one under your control, one under portable.agency's. Those records are the only durable state; there's no service database to go stale or lose.
13
+
### TL;DR Version
14
+
15
+
- lets someone login to a web page with their Discord account
16
+
- the page makes a call to Discord API, checking membership here or not
17
+
- if member, it writes that to the checker's PDS and to the user's PDS
18
+
- if not a member, stops without writing anything anywhere
19
+
20
+
### Detailed Version
21
+
22
+
Each linkage is a _pair of records_ on atproto PDSes — one under your control, one under portable.agency's. Those records are the only durable state; there's no service database to go stale or lose.
14
23
15
24
1. **Link a platformed account.** Authorize the external service (e.g. Discord) so we can confirm your membership and any relevant role. Nothing is written yet.
16
25
2. **Sign in with your Atmosphere account.** Fine-grained OAuth — we only request permission to write to the `agency.portable.membership` collection.
17
26
3. **Two records are written.**
18
-
- An **attestation** (`agency.portable.attestation`) on portable.agency's PDS — a third-party statement that your DID owns the linked account.
19
-
- A **claim** (`agency.portable.membership`) on your own PDS — a self-claim naming portable.agency as the attester.
27
+
- An **attestation** (`agency.portable.attestation`) on portable.agency's PDS — a third-party statement that your DID owns the linked account.
28
+
- A **claim** (`agency.portable.membership`) on your own PDS — a self-claim naming portable.agency as the attester.
20
29
21
-
Both records carry the same `service` block. Matching them is the proof.
30
+
Both records carry the same `service` block. Matching them is the proof.
22
31
23
32
**Multiple linkages.** Record keys are deterministic (hash of `did + service.type + community + identifier`), so re-linking the same external account is idempotent; linking a different account (e.g. a second Discord alt) creates a separate record. You can have N linkages per platform.
24
33
+8
src/server.js
+8
src/server.js
···
131
131
</script>
132
132
<section class="how">
133
133
<h2>How this works</h2>
134
+
<h3>TL;DR Version<h3>
135
+
<ul>
136
+
<li>lets someone login to a web page with their Discord account</li>
137
+
<li>the page makes a call to Discord API, checking membership here or not</li>
138
+
<li>if member, it writes that to the checker's PDS and to the user's PDS</li>
139
+
<li>if not a member, stops without writing anything anywhere</li>
140
+
</ul>
141
+
<h3>Detailed Version</h3>
134
142
<p>Each linkage is a <em>pair of records</em> on atproto PDSes — one under your control, one under portable.agency's. Those records are the only durable state; there's no service database to go stale or lose.</p>
135
143
<ol>
136
144
<li><strong>Link a platformed account.</strong> Authorize the external service (e.g. Discord) so we can confirm your membership and any relevant role. Nothing is written yet.</li>
History
2 rounds
0 comments
yzzxyz.roomy.chat
submitted
#1
2 commits
expand
collapse
tdlr, smol tweaks to server. feel free to disregard the linter changes sry
Remove auto-formatting changes
no conflicts, ready to merge
expand 0 comments
yzzxyz.roomy.chat
submitted
#0
1 commit
expand
collapse
tdlr, smol tweaks to server. feel free to disregard the linter changes sry