@atproto/pds 0.4.168 → 0.4.170
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/dist/api/com/atproto/repo/applyWrites.d.ts.map +1 -1
- package/dist/api/com/atproto/repo/applyWrites.js +14 -4
- package/dist/api/com/atproto/repo/applyWrites.js.map +1 -1
- package/dist/api/com/atproto/repo/createRecord.d.ts.map +1 -1
- package/dist/api/com/atproto/repo/createRecord.js +16 -15
- package/dist/api/com/atproto/repo/createRecord.js.map +1 -1
- package/dist/api/com/atproto/repo/deleteRecord.d.ts.map +1 -1
- package/dist/api/com/atproto/repo/deleteRecord.js +16 -15
- package/dist/api/com/atproto/repo/deleteRecord.js.map +1 -1
- package/dist/api/com/atproto/repo/putRecord.d.ts.map +1 -1
- package/dist/api/com/atproto/repo/putRecord.js +16 -6
- package/dist/api/com/atproto/repo/putRecord.js.map +1 -1
- package/dist/auth-verifier.d.ts +8 -1
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/auth-verifier.js +25 -16
- package/dist/auth-verifier.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +8 -0
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +4 -0
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.d.ts +2 -0
- package/dist/lexicon/types/tools/ozone/moderation/queryEvents.d.ts.map +1 -1
- package/dist/scripts/sequencer-recovery/recoverer.js +1 -1
- package/dist/scripts/sequencer-recovery/recoverer.js.map +1 -1
- package/package.json +12 -12
- package/src/api/com/atproto/repo/applyWrites.ts +17 -4
- package/src/api/com/atproto/repo/createRecord.ts +19 -15
- package/src/api/com/atproto/repo/deleteRecord.ts +19 -16
- package/src/api/com/atproto/repo/putRecord.ts +19 -7
- package/src/auth-verifier.ts +36 -22
- package/src/lexicon/lexicons.ts +5 -0
- package/src/lexicon/types/tools/ozone/moderation/queryEvents.ts +2 -0
- package/src/scripts/sequencer-recovery/recoverer.ts +1 -1
- package/tests/crud.test.ts +12 -0
@@ -33,6 +33,8 @@ export type QueryParams = {
|
|
33
33
|
policies?: string[];
|
34
34
|
/** If specified, only events where the modTool name matches any of the given values are returned */
|
35
35
|
modTool?: string[];
|
36
|
+
/** If specified, only events where the batchId matches the given value are returned */
|
37
|
+
batchId?: string;
|
36
38
|
/** If specified, only events where the age assurance state matches the given value are returned */
|
37
39
|
ageAssuranceState?: 'pending' | 'assured' | 'unknown' | 'reset' | 'blocked' | (string & {});
|
38
40
|
cursor?: string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"queryEvents.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/tools/ozone/moderation/queryEvents.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,wBAAwB,MAAM,WAAW,CAAA;AAM1D,MAAM,MAAM,WAAW,GAAG;IACxB,wKAAwK;IACxK,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2FAA2F;IAC3F,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;IAC7B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iKAAiK;IACjK,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,4PAA4P;IAC5P,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAClD,iJAAiJ;IACjJ,qBAAqB,EAAE,OAAO,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6JAA6J;IAC7J,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,mGAAmG;IACnG,iBAAiB,CAAC,EACd,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,wBAAwB,CAAC,YAAY,EAAE,CAAA;CAChD;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAA;AAE/B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,CAAA"}
|
1
|
+
{"version":3,"file":"queryEvents.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/tools/ozone/moderation/queryEvents.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,wBAAwB,MAAM,WAAW,CAAA;AAM1D,MAAM,MAAM,WAAW,GAAG;IACxB,wKAAwK;IACxK,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2FAA2F;IAC3F,aAAa,EAAE,KAAK,GAAG,MAAM,CAAA;IAC7B,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iKAAiK;IACjK,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,4PAA4P;IAC5P,WAAW,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IAClD,iJAAiJ;IACjJ,qBAAqB,EAAE,OAAO,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6JAA6J;IAC7J,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,oGAAoG;IACpG,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,uFAAuF;IACvF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mGAAmG;IACnG,iBAAiB,CAAC,EACd,SAAS,GACT,SAAS,GACT,SAAS,GACT,OAAO,GACP,SAAS,GACT,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,wBAAwB,CAAC,YAAY,EAAE,CAAA;CAChD;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAA;AAE/B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,CAAA"}
|
@@ -184,7 +184,7 @@ const trackNewAccount = async (recoveryDb, did) => {
|
|
184
184
|
};
|
185
185
|
const parseCommitEvt = async (evt) => {
|
186
186
|
const did = evt.repo;
|
187
|
-
const evtCar = await (0, repo_1.readCar)(evt.blocks);
|
187
|
+
const evtCar = await (0, repo_1.readCar)(evt.blocks, { skipCidVerification: true });
|
188
188
|
const writesUnfiltered = await Promise.all(evt.ops.map(async (op) => {
|
189
189
|
const { collection, rkey } = (0, repo_1.parseDataKey)(op.path);
|
190
190
|
if (op.action === 'delete') {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"recoverer.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/recoverer.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"recoverer.js","sourceRoot":"","sources":["../../../src/scripts/sequencer-recovery/recoverer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@atproto/pds",
|
3
|
-
"version": "0.4.
|
3
|
+
"version": "0.4.170",
|
4
4
|
"license": "MIT",
|
5
5
|
"description": "Reference implementation of atproto Personal Data Server (PDS)",
|
6
6
|
"keywords": [
|
@@ -48,19 +48,19 @@
|
|
48
48
|
"undici": "^6.19.8",
|
49
49
|
"zod": "^3.23.8",
|
50
50
|
"@atproto-labs/fetch-node": "0.1.9",
|
51
|
-
"@atproto/
|
52
|
-
"@atproto/
|
51
|
+
"@atproto-labs/xrpc-utils": "0.0.19",
|
52
|
+
"@atproto/api": "^0.16.3",
|
53
|
+
"@atproto/aws": "^0.2.26",
|
53
54
|
"@atproto/common": "^0.4.11",
|
54
|
-
"@atproto-labs/xrpc-utils": "0.0.18",
|
55
55
|
"@atproto/crypto": "^0.4.4",
|
56
56
|
"@atproto/identity": "^0.4.8",
|
57
|
-
"@atproto/lexicon": "^0.4.
|
57
|
+
"@atproto/lexicon": "^0.4.13",
|
58
58
|
"@atproto/oauth-scopes": "^0.0.2",
|
59
59
|
"@atproto/oauth-provider": "^0.10.2",
|
60
|
-
"@atproto/repo": "^0.8.
|
60
|
+
"@atproto/repo": "^0.8.6",
|
61
61
|
"@atproto/syntax": "^0.4.0",
|
62
|
-
"@atproto/xrpc": "^0.7.
|
63
|
-
"@atproto/xrpc-server": "^0.9.
|
62
|
+
"@atproto/xrpc": "^0.7.2",
|
63
|
+
"@atproto/xrpc-server": "^0.9.2"
|
64
64
|
},
|
65
65
|
"devDependencies": {
|
66
66
|
"@atproto/pds-entryway": "npm:@atproto/pds@0.3.0-entryway.3",
|
@@ -78,10 +78,10 @@
|
|
78
78
|
"ts-node": "^10.8.2",
|
79
79
|
"typescript": "^5.6.3",
|
80
80
|
"ws": "^8.12.0",
|
81
|
-
"@atproto/api": "^0.16.
|
82
|
-
"@atproto/bsky": "^0.0.
|
83
|
-
"@atproto/dev-env": "^0.3.
|
84
|
-
"@atproto/lex-cli": "^0.9.
|
81
|
+
"@atproto/api": "^0.16.3",
|
82
|
+
"@atproto/bsky": "^0.0.178",
|
83
|
+
"@atproto/dev-env": "^0.3.165",
|
84
|
+
"@atproto/lex-cli": "^0.9.2",
|
85
85
|
"@atproto/oauth-client-browser-example": "0.0.5"
|
86
86
|
},
|
87
87
|
"scripts": {
|
@@ -39,8 +39,15 @@ const ratelimitPoints = ({ input }: { input: HandlerInput }) => {
|
|
39
39
|
export default function (server: Server, ctx: AppContext) {
|
40
40
|
server.com.atproto.repo.applyWrites({
|
41
41
|
auth: ctx.authVerifier.authorization({
|
42
|
-
checkTakedown
|
43
|
-
|
42
|
+
// @NOTE the "checkTakedown" and "checkDeactivated" checks are typically
|
43
|
+
// performed during auth. However, since this method's "repo" parameter
|
44
|
+
// can be a handle, we will need to fetch the account again to ensure that
|
45
|
+
// the handle matches the DID from the request's credentials. In order to
|
46
|
+
// avoid fetching the account twice (during auth, and then again in the
|
47
|
+
// controller), the checks are disabled here:
|
48
|
+
|
49
|
+
// checkTakedown: true,
|
50
|
+
// checkDeactivated: true,
|
44
51
|
authorize: () => {
|
45
52
|
// Performed in the handler as it is based on the request body
|
46
53
|
},
|
@@ -62,10 +69,16 @@ export default function (server: Server, ctx: AppContext) {
|
|
62
69
|
handler: async ({ input, auth }) => {
|
63
70
|
const { repo, validate, swapCommit, writes } = input.body
|
64
71
|
|
65
|
-
const
|
66
|
-
|
72
|
+
const account = await ctx.authVerifier.findAccount(repo, {
|
73
|
+
checkDeactivated: true,
|
74
|
+
checkTakedown: true,
|
75
|
+
})
|
76
|
+
|
77
|
+
const did = account.did
|
78
|
+
if (did !== auth.credentials.did) {
|
67
79
|
throw new AuthRequiredError()
|
68
80
|
}
|
81
|
+
|
69
82
|
if (writes.length > 200) {
|
70
83
|
throw new InvalidRequestError('Too many writes. Max: 200')
|
71
84
|
}
|
@@ -15,8 +15,15 @@ import {
|
|
15
15
|
export default function (server: Server, ctx: AppContext) {
|
16
16
|
server.com.atproto.repo.createRecord({
|
17
17
|
auth: ctx.authVerifier.authorization({
|
18
|
-
checkTakedown
|
19
|
-
|
18
|
+
// @NOTE the "checkTakedown" and "checkDeactivated" checks are typically
|
19
|
+
// performed during auth. However, since this method's "repo" parameter
|
20
|
+
// can be a handle, we will need to fetch the account again to ensure that
|
21
|
+
// the handle matches the DID from the request's credentials. In order to
|
22
|
+
// avoid fetching the account twice (during auth, and then again in the
|
23
|
+
// controller), the checks are disabled here:
|
24
|
+
|
25
|
+
// checkTakedown: true,
|
26
|
+
// checkDeactivated: true,
|
20
27
|
authorize: () => {
|
21
28
|
// Performed in the handler as it requires the request body
|
22
29
|
},
|
@@ -37,6 +44,16 @@ export default function (server: Server, ctx: AppContext) {
|
|
37
44
|
const { repo, collection, rkey, record, swapCommit, validate } =
|
38
45
|
input.body
|
39
46
|
|
47
|
+
const account = await ctx.authVerifier.findAccount(repo, {
|
48
|
+
checkDeactivated: true,
|
49
|
+
checkTakedown: true,
|
50
|
+
})
|
51
|
+
|
52
|
+
const did = account.did
|
53
|
+
if (did !== auth.credentials.did) {
|
54
|
+
throw new AuthRequiredError()
|
55
|
+
}
|
56
|
+
|
40
57
|
if (auth.credentials.type === 'oauth') {
|
41
58
|
auth.credentials.permissions.assertRepo({
|
42
59
|
action: 'create',
|
@@ -44,19 +61,6 @@ export default function (server: Server, ctx: AppContext) {
|
|
44
61
|
})
|
45
62
|
}
|
46
63
|
|
47
|
-
const account = await ctx.accountManager.getAccount(repo, {
|
48
|
-
includeDeactivated: true,
|
49
|
-
})
|
50
|
-
|
51
|
-
if (!account) {
|
52
|
-
throw new InvalidRequestError(`Could not find repo: ${repo}`)
|
53
|
-
} else if (account.deactivatedAt) {
|
54
|
-
throw new InvalidRequestError('Account is deactivated')
|
55
|
-
}
|
56
|
-
const did = account.did
|
57
|
-
if (did !== auth.credentials.did) {
|
58
|
-
throw new AuthRequiredError()
|
59
|
-
}
|
60
64
|
const swapCommitCid = swapCommit ? CID.parse(swapCommit) : undefined
|
61
65
|
|
62
66
|
let write: PreparedCreate
|
@@ -12,8 +12,15 @@ import {
|
|
12
12
|
export default function (server: Server, ctx: AppContext) {
|
13
13
|
server.com.atproto.repo.deleteRecord({
|
14
14
|
auth: ctx.authVerifier.authorization({
|
15
|
-
checkTakedown
|
16
|
-
|
15
|
+
// @NOTE the "checkTakedown" and "checkDeactivated" checks are typically
|
16
|
+
// performed during auth. However, since this method's "repo" parameter
|
17
|
+
// can be a handle, we will need to fetch the account again to ensure that
|
18
|
+
// the handle matches the DID from the request's credentials. In order to
|
19
|
+
// avoid fetching the account twice (during auth, and then again in the
|
20
|
+
// controller), the checks are disabled here:
|
21
|
+
|
22
|
+
// checkTakedown: true,
|
23
|
+
// checkDeactivated: true,
|
17
24
|
authorize: () => {
|
18
25
|
// Performed in the handler as it requires the request body
|
19
26
|
},
|
@@ -33,6 +40,16 @@ export default function (server: Server, ctx: AppContext) {
|
|
33
40
|
handler: async ({ input, auth }) => {
|
34
41
|
const { repo, collection, rkey, swapCommit, swapRecord } = input.body
|
35
42
|
|
43
|
+
const account = await ctx.authVerifier.findAccount(repo, {
|
44
|
+
checkDeactivated: true,
|
45
|
+
checkTakedown: true,
|
46
|
+
})
|
47
|
+
|
48
|
+
const did = account.did
|
49
|
+
if (did !== auth.credentials.did) {
|
50
|
+
throw new AuthRequiredError()
|
51
|
+
}
|
52
|
+
|
36
53
|
// We can't compute permissions based on the request payload ("input") in
|
37
54
|
// the 'auth' phase, so we do it here.
|
38
55
|
if (auth.credentials.type === 'oauth') {
|
@@ -42,20 +59,6 @@ export default function (server: Server, ctx: AppContext) {
|
|
42
59
|
})
|
43
60
|
}
|
44
61
|
|
45
|
-
const account = await ctx.accountManager.getAccount(repo, {
|
46
|
-
includeDeactivated: true,
|
47
|
-
})
|
48
|
-
|
49
|
-
if (!account) {
|
50
|
-
throw new InvalidRequestError(`Could not find repo: ${repo}`)
|
51
|
-
} else if (account.deactivatedAt) {
|
52
|
-
throw new InvalidRequestError('Account is deactivated')
|
53
|
-
}
|
54
|
-
const did = account.did
|
55
|
-
if (did !== auth.credentials.did) {
|
56
|
-
throw new AuthRequiredError()
|
57
|
-
}
|
58
|
-
|
59
62
|
const swapCommitCid = swapCommit ? CID.parse(swapCommit) : undefined
|
60
63
|
const swapRecordCid = swapRecord ? CID.parse(swapRecord) : undefined
|
61
64
|
|
@@ -21,8 +21,15 @@ import {
|
|
21
21
|
export default function (server: Server, ctx: AppContext) {
|
22
22
|
server.com.atproto.repo.putRecord({
|
23
23
|
auth: ctx.authVerifier.authorization({
|
24
|
-
checkTakedown
|
25
|
-
|
24
|
+
// @NOTE the "checkTakedown" and "checkDeactivated" checks are typically
|
25
|
+
// performed during auth. However, since this method's "repo" parameter
|
26
|
+
// can be a handle, we will need to fetch the account again to ensure that
|
27
|
+
// the handle matches the DID from the request's credentials. In order to
|
28
|
+
// avoid fetching the account twice (during auth, and then again in the
|
29
|
+
// controller), the checks are disabled here:
|
30
|
+
|
31
|
+
// checkTakedown: true,
|
32
|
+
// checkDeactivated: true,
|
26
33
|
authorize: () => {
|
27
34
|
// Performed in the handler as it requires the request body
|
28
35
|
},
|
@@ -50,6 +57,16 @@ export default function (server: Server, ctx: AppContext) {
|
|
50
57
|
swapRecord,
|
51
58
|
} = input.body
|
52
59
|
|
60
|
+
const account = await ctx.authVerifier.findAccount(repo, {
|
61
|
+
checkDeactivated: true,
|
62
|
+
checkTakedown: true,
|
63
|
+
})
|
64
|
+
|
65
|
+
const did = account.did
|
66
|
+
if (did !== auth.credentials.did) {
|
67
|
+
throw new AuthRequiredError()
|
68
|
+
}
|
69
|
+
|
53
70
|
// We can't compute permissions based on the request payload ("input") in
|
54
71
|
// the 'auth' phase, so we do it here.
|
55
72
|
if (auth.credentials.type === 'oauth') {
|
@@ -63,11 +80,6 @@ export default function (server: Server, ctx: AppContext) {
|
|
63
80
|
})
|
64
81
|
}
|
65
82
|
|
66
|
-
const { did } = auth.credentials
|
67
|
-
if (did !== repo) {
|
68
|
-
throw new AuthRequiredError()
|
69
|
-
}
|
70
|
-
|
71
83
|
const uri = AtUri.make(did, collection, rkey)
|
72
84
|
const swapCommitCid = swapCommit ? CID.parse(swapCommit) : undefined
|
73
85
|
const swapRecordCid =
|
package/src/auth-verifier.ts
CHANGED
@@ -24,6 +24,7 @@ import {
|
|
24
24
|
verifyJwt as verifyServiceJwt,
|
25
25
|
} from '@atproto/xrpc-server'
|
26
26
|
import { AccountManager } from './account-manager/account-manager'
|
27
|
+
import { ActorAccount } from './account-manager/helpers/account'
|
27
28
|
import {
|
28
29
|
AccessOutput,
|
29
30
|
AdminTokenOutput,
|
@@ -424,30 +425,43 @@ export class AuthVerifier {
|
|
424
425
|
|
425
426
|
protected async verifyStatus(
|
426
427
|
did: string,
|
427
|
-
|
428
|
+
options: VerifiedOptions,
|
428
429
|
): Promise<void> {
|
429
|
-
if (
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
430
|
+
if (options.checkDeactivated || options.checkTakedown) {
|
431
|
+
await this.findAccount(did, options)
|
432
|
+
}
|
433
|
+
}
|
434
|
+
|
435
|
+
/**
|
436
|
+
* Finds an account by its handle or DID, returning possibly deactivated or
|
437
|
+
* taken down accounts (unless `options.checkDeactivated` or
|
438
|
+
* `options.checkTakedown` are set to true, respectively).
|
439
|
+
*/
|
440
|
+
public async findAccount(
|
441
|
+
handleOrDid: string,
|
442
|
+
options: VerifiedOptions,
|
443
|
+
): Promise<ActorAccount> {
|
444
|
+
const account = await this.accountManager.getAccount(handleOrDid, {
|
445
|
+
includeDeactivated: true,
|
446
|
+
includeTakenDown: true,
|
447
|
+
})
|
448
|
+
if (!account) {
|
449
|
+
// will be turned into ExpiredToken for the client if proxied by entryway
|
450
|
+
throw new ForbiddenError('Account not found', 'AccountNotFound')
|
451
|
+
}
|
452
|
+
if (options.checkTakedown && softDeleted(account)) {
|
453
|
+
throw new AuthRequiredError(
|
454
|
+
'Account has been taken down',
|
455
|
+
'AccountTakedown',
|
456
|
+
)
|
457
|
+
}
|
458
|
+
if (options.checkDeactivated && account.deactivatedAt) {
|
459
|
+
throw new AuthRequiredError(
|
460
|
+
'Account is deactivated',
|
461
|
+
'AccountDeactivated',
|
462
|
+
)
|
450
463
|
}
|
464
|
+
return account
|
451
465
|
}
|
452
466
|
|
453
467
|
/**
|
package/src/lexicon/lexicons.ts
CHANGED
@@ -15760,6 +15760,11 @@ export const schemaDict = {
|
|
15760
15760
|
description:
|
15761
15761
|
'If specified, only events where the modTool name matches any of the given values are returned',
|
15762
15762
|
},
|
15763
|
+
batchId: {
|
15764
|
+
type: 'string',
|
15765
|
+
description:
|
15766
|
+
'If specified, only events where the batchId matches the given value are returned',
|
15767
|
+
},
|
15763
15768
|
ageAssuranceState: {
|
15764
15769
|
type: 'string',
|
15765
15770
|
description:
|
@@ -49,6 +49,8 @@ export type QueryParams = {
|
|
49
49
|
policies?: string[]
|
50
50
|
/** If specified, only events where the modTool name matches any of the given values are returned */
|
51
51
|
modTool?: string[]
|
52
|
+
/** If specified, only events where the batchId matches the given value are returned */
|
53
|
+
batchId?: string
|
52
54
|
/** If specified, only events where the age assurance state matches the given value are returned */
|
53
55
|
ageAssuranceState?:
|
54
56
|
| 'pending'
|
@@ -238,7 +238,7 @@ const parseCommitEvt = async (
|
|
238
238
|
blocks: BlockMap
|
239
239
|
}> => {
|
240
240
|
const did = evt.repo
|
241
|
-
const evtCar = await readCar(evt.blocks)
|
241
|
+
const evtCar = await readCar(evt.blocks, { skipCidVerification: true })
|
242
242
|
const writesUnfiltered = await Promise.all(
|
243
243
|
evt.ops.map(async (op) => {
|
244
244
|
const { collection, rkey } = parseDataKey(op.path)
|
package/tests/crud.test.ts
CHANGED
@@ -455,6 +455,18 @@ describe('crud operations', () => {
|
|
455
455
|
})
|
456
456
|
})
|
457
457
|
|
458
|
+
it('still works if repo is specified by handle', async () => {
|
459
|
+
await bobAgent.api.com.atproto.repo.putRecord({
|
460
|
+
repo: 'bob.test',
|
461
|
+
collection: ids.AppBskyGraphFollow,
|
462
|
+
rkey: TID.nextStr(),
|
463
|
+
record: {
|
464
|
+
subject: aliceAgent.accountDid,
|
465
|
+
createdAt: new Date().toISOString(),
|
466
|
+
},
|
467
|
+
})
|
468
|
+
})
|
469
|
+
|
458
470
|
it('does not produce commit on no-op update', async () => {
|
459
471
|
const { repo } = bobAgent.api.com.atproto
|
460
472
|
const rootRes1 = await bobAgent.api.com.atproto.sync.getLatestCommit({
|