@atproto/ozone 0.1.106 → 0.1.108
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 +20 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +6 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/proxied.d.ts.map +1 -1
- package/dist/api/proxied.js +29 -16
- package/dist/api/proxied.js.map +1 -1
- package/dist/api/server/getConfig.d.ts.map +1 -1
- package/dist/api/server/getConfig.js +1 -0
- package/dist/api/server/getConfig.js.map +1 -1
- package/dist/api/setting/removeOptions.d.ts.map +1 -1
- package/dist/api/setting/removeOptions.js +1 -0
- package/dist/api/setting/removeOptions.js.map +1 -1
- package/dist/api/setting/upsertOption.js +7 -0
- package/dist/api/setting/upsertOption.js.map +1 -1
- package/dist/api/util.d.ts +1 -1
- package/dist/api/util.d.ts.map +1 -1
- package/dist/api/util.js +6 -1
- package/dist/api/util.js.map +1 -1
- package/dist/api/verification/grantVerifications.d.ts +4 -0
- package/dist/api/verification/grantVerifications.d.ts.map +1 -0
- package/dist/api/verification/grantVerifications.js +52 -0
- package/dist/api/verification/grantVerifications.js.map +1 -0
- package/dist/api/verification/listVerifications.d.ts +4 -0
- package/dist/api/verification/listVerifications.d.ts.map +1 -0
- package/dist/api/verification/listVerifications.js +32 -0
- package/dist/api/verification/listVerifications.js.map +1 -0
- package/dist/api/verification/revokeVerifications.d.ts +4 -0
- package/dist/api/verification/revokeVerifications.d.ts.map +1 -0
- package/dist/api/verification/revokeVerifications.js +36 -0
- package/dist/api/verification/revokeVerifications.js.map +1 -0
- package/dist/auth-verifier.d.ts +4 -1
- package/dist/auth-verifier.d.ts.map +1 -1
- package/dist/auth-verifier.js +4 -3
- package/dist/auth-verifier.js.map +1 -1
- package/dist/background.d.ts +3 -1
- package/dist/background.d.ts.map +1 -1
- package/dist/background.js +3 -2
- package/dist/background.js.map +1 -1
- package/dist/config/config.d.ts +9 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +10 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/env.d.ts +5 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +5 -0
- package/dist/config/env.js.map +1 -1
- package/dist/context.d.ts +6 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +12 -0
- package/dist/context.js.map +1 -1
- package/dist/daemon/context.d.ts +3 -0
- package/dist/daemon/context.d.ts.map +1 -1
- package/dist/daemon/context.js +11 -0
- package/dist/daemon/context.js.map +1 -1
- package/dist/daemon/verification-listener.d.ts +29 -0
- package/dist/daemon/verification-listener.d.ts.map +1 -0
- package/dist/daemon/verification-listener.js +171 -0
- package/dist/daemon/verification-listener.js.map +1 -0
- package/dist/db/migrations/20250415T201720309Z-verification.d.ts +4 -0
- package/dist/db/migrations/20250415T201720309Z-verification.d.ts.map +1 -0
- package/dist/db/migrations/20250415T201720309Z-verification.js +35 -0
- package/dist/db/migrations/20250415T201720309Z-verification.js.map +1 -0
- package/dist/db/migrations/20250417T201720309Z-firehose-cursor.d.ts +4 -0
- package/dist/db/migrations/20250417T201720309Z-firehose-cursor.d.ts.map +1 -0
- package/dist/db/migrations/20250417T201720309Z-firehose-cursor.js +17 -0
- package/dist/db/migrations/20250417T201720309Z-firehose-cursor.js.map +1 -0
- package/dist/db/migrations/index.d.ts +2 -0
- package/dist/db/migrations/index.d.ts.map +1 -1
- package/dist/db/migrations/index.js +3 -1
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/pagination.d.ts +15 -0
- package/dist/db/pagination.d.ts.map +1 -1
- package/dist/db/pagination.js +23 -1
- package/dist/db/pagination.js.map +1 -1
- package/dist/db/schema/firehose_cursor.d.ts +11 -0
- package/dist/db/schema/firehose_cursor.d.ts.map +1 -0
- package/dist/db/schema/firehose_cursor.js +5 -0
- package/dist/db/schema/firehose_cursor.js.map +1 -0
- package/dist/db/schema/index.d.ts +3 -1
- package/dist/db/schema/index.d.ts.map +1 -1
- package/dist/db/schema/member.d.ts +1 -1
- package/dist/db/schema/member.d.ts.map +1 -1
- package/dist/db/schema/verification.d.ts +19 -0
- package/dist/db/schema/verification.d.ts.map +1 -0
- package/dist/db/schema/verification.js +5 -0
- package/dist/db/schema/verification.js.map +1 -0
- package/dist/jetstream/service.d.ts +64 -0
- package/dist/jetstream/service.d.ts.map +1 -0
- package/dist/jetstream/service.js +65 -0
- package/dist/jetstream/service.js.map +1 -0
- package/dist/lexicon/index.d.ts +19 -0
- package/dist/lexicon/index.d.ts.map +1 -1
- package/dist/lexicon/index.js +56 -1
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +976 -80
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +485 -1
- package/dist/lexicon/lexicons.js.map +1 -1
- package/dist/lexicon/types/chat/bsky/actor/defs.d.ts +1 -1
- package/dist/lexicon/types/chat/bsky/actor/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.d.ts +81 -0
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.js +61 -0
- package/dist/lexicon/types/tools/ozone/hosting/getAccountHistory.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/server/getConfig.d.ts +3 -1
- package/dist/lexicon/types/tools/ozone/server/getConfig.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/server/getConfig.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/setting/upsertOption.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/setting/upsertOption.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/addMember.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/team/addMember.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/defs.d.ts +3 -1
- package/dist/lexicon/types/tools/ozone/team/defs.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/defs.js +3 -1
- package/dist/lexicon/types/tools/ozone/team/defs.js.map +1 -1
- package/dist/lexicon/types/tools/ozone/team/updateMember.d.ts +1 -1
- package/dist/lexicon/types/tools/ozone/team/updateMember.d.ts.map +1 -1
- package/dist/lexicon/types/tools/ozone/verification/defs.d.ts +43 -0
- package/dist/lexicon/types/tools/ozone/verification/defs.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/verification/defs.js +16 -0
- package/dist/lexicon/types/tools/ozone/verification/defs.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.d.ts +66 -0
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.js +25 -0
- package/dist/lexicon/types/tools/ozone/verification/grantVerifications.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/verification/listVerifications.d.ts +52 -0
- package/dist/lexicon/types/tools/ozone/verification/listVerifications.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/verification/listVerifications.js +7 -0
- package/dist/lexicon/types/tools/ozone/verification/listVerifications.js.map +1 -0
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.d.ts +56 -0
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.d.ts.map +1 -0
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.js +16 -0
- package/dist/lexicon/types/tools/ozone/verification/revokeVerifications.js.map +1 -0
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +2 -1
- package/dist/logger.js.map +1 -1
- package/dist/mod-service/index.d.ts.map +1 -1
- package/dist/mod-service/index.js +58 -21
- package/dist/mod-service/index.js.map +1 -1
- package/dist/mod-service/status.d.ts +6 -0
- package/dist/mod-service/status.d.ts.map +1 -1
- package/dist/team/index.d.ts +1 -0
- package/dist/team/index.d.ts.map +1 -1
- package/dist/team/index.js +3 -0
- package/dist/team/index.js.map +1 -1
- package/dist/verification/issuer.d.ts +37 -0
- package/dist/verification/issuer.d.ts.map +1 -0
- package/dist/verification/issuer.js +119 -0
- package/dist/verification/issuer.js.map +1 -0
- package/dist/verification/service.d.ts +47 -0
- package/dist/verification/service.d.ts.map +1 -0
- package/dist/verification/service.js +141 -0
- package/dist/verification/service.js.map +1 -0
- package/dist/verification/util.d.ts +6 -0
- package/dist/verification/util.d.ts.map +1 -0
- package/dist/verification/util.js +32 -0
- package/dist/verification/util.js.map +1 -0
- package/package.json +5 -4
- package/src/api/index.ts +6 -0
- package/src/api/proxied.ts +39 -24
- package/src/api/server/getConfig.ts +1 -0
- package/src/api/setting/removeOptions.ts +1 -0
- package/src/api/setting/upsertOption.ts +7 -0
- package/src/api/util.ts +7 -1
- package/src/api/verification/grantVerifications.ts +74 -0
- package/src/api/verification/listVerifications.ts +44 -0
- package/src/api/verification/revokeVerifications.ts +43 -0
- package/src/auth-verifier.ts +8 -4
- package/src/background.ts +7 -2
- package/src/config/config.ts +21 -0
- package/src/config/env.ts +10 -0
- package/src/context.ts +22 -0
- package/src/daemon/context.ts +19 -0
- package/src/daemon/verification-listener.ts +164 -0
- package/src/db/migrations/20250415T201720309Z-verification.ts +34 -0
- package/src/db/migrations/20250417T201720309Z-firehose-cursor.ts +16 -0
- package/src/db/migrations/index.ts +2 -0
- package/src/db/pagination.ts +31 -0
- package/src/db/schema/firehose_cursor.ts +13 -0
- package/src/db/schema/index.ts +5 -1
- package/src/db/schema/member.ts +1 -0
- package/src/db/schema/verification.ts +21 -0
- package/src/jetstream/service.ts +110 -0
- package/src/lexicon/index.ts +69 -0
- package/src/lexicon/lexicons.ts +505 -1
- package/src/lexicon/types/chat/bsky/actor/defs.ts +1 -1
- package/src/lexicon/types/tools/ozone/hosting/getAccountHistory.ts +161 -0
- package/src/lexicon/types/tools/ozone/server/getConfig.ts +3 -0
- package/src/lexicon/types/tools/ozone/setting/defs.ts +1 -0
- package/src/lexicon/types/tools/ozone/setting/upsertOption.ts +1 -0
- package/src/lexicon/types/tools/ozone/team/addMember.ts +1 -0
- package/src/lexicon/types/tools/ozone/team/defs.ts +3 -0
- package/src/lexicon/types/tools/ozone/team/updateMember.ts +1 -0
- package/src/lexicon/types/tools/ozone/verification/defs.ts +59 -0
- package/src/lexicon/types/tools/ozone/verification/grantVerifications.ts +100 -0
- package/src/lexicon/types/tools/ozone/verification/listVerifications.ts +70 -0
- package/src/lexicon/types/tools/ozone/verification/revokeVerifications.ts +81 -0
- package/src/logger.ts +2 -0
- package/src/mod-service/index.ts +83 -30
- package/src/team/index.ts +4 -0
- package/src/verification/issuer.ts +135 -0
- package/src/verification/service.ts +208 -0
- package/src/verification/util.ts +50 -0
- package/tests/__snapshots__/verification-listener.test.ts.snap +146 -0
- package/tests/__snapshots__/verification.test.ts.snap +288 -0
- package/tests/get-reporter-stats.test.ts +24 -9
- package/tests/verification-listener.test.ts +102 -0
- package/tests/verification.test.ts +136 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/tsconfig.tests.tsbuildinfo +1 -1
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VerificationIssuer = void 0;
|
|
4
|
+
const api_1 = require("@atproto/api");
|
|
5
|
+
class VerificationIssuer {
|
|
6
|
+
constructor(verifierConfig) {
|
|
7
|
+
Object.defineProperty(this, "verifierConfig", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
configurable: true,
|
|
10
|
+
writable: true,
|
|
11
|
+
value: verifierConfig
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(this, "session", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: true,
|
|
17
|
+
value: new api_1.CredentialSession(new URL(this.verifierConfig.url))
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(this, "agent", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
value: new api_1.Agent(this.session)
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
static creator() {
|
|
27
|
+
return (verifierConfig) => new VerificationIssuer(verifierConfig);
|
|
28
|
+
}
|
|
29
|
+
async getAgent() {
|
|
30
|
+
if (!this.session.hasSession) {
|
|
31
|
+
await this.session.login({
|
|
32
|
+
identifier: this.verifierConfig.did,
|
|
33
|
+
password: this.verifierConfig.password,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// Trigger a test request to check if the session is still valid, if not, we will login again
|
|
37
|
+
try {
|
|
38
|
+
await this.agent.com.atproto.server.getSession();
|
|
39
|
+
}
|
|
40
|
+
catch (err) {
|
|
41
|
+
if (err.status === 401) {
|
|
42
|
+
await this.session.login({
|
|
43
|
+
identifier: this.verifierConfig.did,
|
|
44
|
+
password: this.verifierConfig.password,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return this.agent;
|
|
49
|
+
}
|
|
50
|
+
async verify(verifications) {
|
|
51
|
+
const grantedVerifications = [];
|
|
52
|
+
const failedVerifications = [];
|
|
53
|
+
const now = new Date().toISOString();
|
|
54
|
+
const agent = await this.getAgent();
|
|
55
|
+
await Promise.allSettled(verifications.map(async ({ displayName, handle, subject, createdAt }) => {
|
|
56
|
+
try {
|
|
57
|
+
const verificationRecord = {
|
|
58
|
+
createdAt: createdAt || now,
|
|
59
|
+
issuer: this.verifierConfig.did,
|
|
60
|
+
displayName,
|
|
61
|
+
handle,
|
|
62
|
+
subject,
|
|
63
|
+
};
|
|
64
|
+
const { data: { uri, cid }, } = await agent.com.atproto.repo.createRecord({
|
|
65
|
+
repo: this.verifierConfig.did,
|
|
66
|
+
record: verificationRecord,
|
|
67
|
+
collection: 'app.bsky.graph.verification',
|
|
68
|
+
});
|
|
69
|
+
grantedVerifications.push({
|
|
70
|
+
...verificationRecord,
|
|
71
|
+
uri,
|
|
72
|
+
cid,
|
|
73
|
+
revokedAt: null,
|
|
74
|
+
updatedAt: now,
|
|
75
|
+
revokedBy: null,
|
|
76
|
+
revokeReason: null,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
failedVerifications.push({
|
|
81
|
+
$type: 'tools.ozone.verification.grantVerifications#grantError',
|
|
82
|
+
error: err.message,
|
|
83
|
+
subject,
|
|
84
|
+
});
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}));
|
|
88
|
+
return { grantedVerifications, failedVerifications };
|
|
89
|
+
}
|
|
90
|
+
async revoke({ uris }) {
|
|
91
|
+
const revokedVerifications = [];
|
|
92
|
+
const failedRevocations = [];
|
|
93
|
+
const agent = await this.getAgent();
|
|
94
|
+
await Promise.allSettled(uris.map(async (uri) => {
|
|
95
|
+
try {
|
|
96
|
+
const atUri = new api_1.AtUri(uri);
|
|
97
|
+
if (atUri.collection !== 'app.bsky.graph.verification') {
|
|
98
|
+
throw new Error(`Only verification records can be revoked`);
|
|
99
|
+
}
|
|
100
|
+
if (atUri.host !== this.verifierConfig.did) {
|
|
101
|
+
throw new Error(`Cannot revoke verification record ${uri} not issued by ${this.verifierConfig.did}`);
|
|
102
|
+
}
|
|
103
|
+
await agent.com.atproto.repo.deleteRecord({
|
|
104
|
+
collection: atUri.collection,
|
|
105
|
+
repo: this.verifierConfig.did,
|
|
106
|
+
rkey: atUri.rkey,
|
|
107
|
+
});
|
|
108
|
+
revokedVerifications.push(uri);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
failedRevocations.push({ uri, error: err.message });
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
}));
|
|
115
|
+
return { revokedVerifications, failedRevocations };
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.VerificationIssuer = VerificationIssuer;
|
|
119
|
+
//# sourceMappingURL=issuer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issuer.js","sourceRoot":"","sources":["../../src/verification/issuer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Selectable } from 'kysely';
|
|
2
|
+
import { $Typed, AppBskyActorDefs, ToolsOzoneModerationDefs, ToolsOzoneVerificationDefs } from '@atproto/api';
|
|
3
|
+
import { Database } from '../db';
|
|
4
|
+
import { Verification } from '../db/schema/verification';
|
|
5
|
+
export type VerificationServiceCreator = (db: Database) => VerificationService;
|
|
6
|
+
export declare class VerificationService {
|
|
7
|
+
db: Database;
|
|
8
|
+
constructor(db: Database);
|
|
9
|
+
static creator(): (db: Database) => VerificationService;
|
|
10
|
+
create(verifications: Pick<Verification, 'uri' | 'issuer' | 'subject' | 'handle' | 'displayName' | 'createdAt' | 'cid'>[]): Promise<Selectable<Verification>[]>;
|
|
11
|
+
markRevoked({ uris, revokedBy, revokedAt, revokeReason, }: {
|
|
12
|
+
uris: string[];
|
|
13
|
+
revokedBy?: string;
|
|
14
|
+
revokedAt?: string;
|
|
15
|
+
revokeReason?: string;
|
|
16
|
+
}): Promise<import("kysely").UpdateResult[] | undefined>;
|
|
17
|
+
list({ sortDirection, cursor, createdAfter, createdBefore, issuers, subjects, isRevoked, limit, }: {
|
|
18
|
+
sortDirection?: 'asc' | 'desc';
|
|
19
|
+
cursor?: string;
|
|
20
|
+
createdAfter?: string;
|
|
21
|
+
createdBefore?: string;
|
|
22
|
+
issuers?: string[];
|
|
23
|
+
subjects?: string[];
|
|
24
|
+
isRevoked?: boolean;
|
|
25
|
+
limit?: number;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
verifications: {
|
|
28
|
+
createdAt: string;
|
|
29
|
+
updatedAt: string;
|
|
30
|
+
uri: string;
|
|
31
|
+
cid: string;
|
|
32
|
+
subject: string;
|
|
33
|
+
handle: string;
|
|
34
|
+
displayName: string;
|
|
35
|
+
issuer: string;
|
|
36
|
+
revokeReason: string | null;
|
|
37
|
+
revokedAt: string | null;
|
|
38
|
+
revokedBy: string | null;
|
|
39
|
+
}[];
|
|
40
|
+
cursor: string | undefined;
|
|
41
|
+
}>;
|
|
42
|
+
view(verifications: Selectable<Verification>[], repos: Map<string, $Typed<ToolsOzoneModerationDefs.RepoViewDetail> | $Typed<ToolsOzoneModerationDefs.RepoViewNotFound>>, profiles: Map<string, AppBskyActorDefs.ProfileViewDetailed>): $Typed<ToolsOzoneVerificationDefs.VerificationView>[];
|
|
43
|
+
getFirehoseCursor(): Promise<number | null>;
|
|
44
|
+
createFirehoseCursor(): Promise<import("kysely").InsertResult[]>;
|
|
45
|
+
updateFirehoseCursor(cursor: number): Promise<number | null | undefined>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/verification/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EACL,MAAM,EACN,gBAAgB,EAEhB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,MAAM,MAAM,0BAA0B,GAAG,CAAC,EAAE,EAAE,QAAQ,KAAK,mBAAmB,CAAA;AAE9E,qBAAa,mBAAmB;IACX,EAAE,EAAE,QAAQ;gBAAZ,EAAE,EAAE,QAAQ;IAE/B,MAAM,CAAC,OAAO,KACJ,IAAI,QAAQ;IAGhB,MAAM,CACV,aAAa,EAAE,IAAI,CACjB,YAAY,EACV,KAAK,GACL,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,aAAa,GACb,WAAW,GACX,KAAK,CACR,EAAE;IAYC,WAAW,CAAC,EAChB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,YAAY,GACb,EAAE;QACD,IAAI,EAAE,MAAM,EAAE,CAAA;QACd,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB;IAoBK,IAAI,CAAC,EACT,aAAa,EACb,MAAM,EACN,YAAY,EACZ,aAAa,EACb,OAAY,EACZ,QAAa,EACb,SAAS,EACT,KAAW,GACZ,EAAE;QACD,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;QAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;QACnB,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,KAAK,CAAC,EAAE,MAAM,CAAA;KACf;;;;;;;;;;;;;;;;IAsCD,IAAI,CACF,aAAa,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,EACzC,KAAK,EAAE,GAAG,CACR,MAAM,EACJ,MAAM,CAAC,wBAAwB,CAAC,cAAc,CAAC,GAC/C,MAAM,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CACpD,EACD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,GAC1D,MAAM,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,EAAE;IAoClD,iBAAiB;IAUvB,oBAAoB;IAWd,oBAAoB,CAAC,MAAM,EAAE,MAAM;CAa1C"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.VerificationService = void 0;
|
|
4
|
+
const api_1 = require("@atproto/api");
|
|
5
|
+
const pagination_1 = require("../db/pagination");
|
|
6
|
+
class VerificationService {
|
|
7
|
+
constructor(db) {
|
|
8
|
+
Object.defineProperty(this, "db", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
configurable: true,
|
|
11
|
+
writable: true,
|
|
12
|
+
value: db
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
static creator() {
|
|
16
|
+
return (db) => new VerificationService(db);
|
|
17
|
+
}
|
|
18
|
+
async create(verifications) {
|
|
19
|
+
return this.db.transaction(async (tx) => {
|
|
20
|
+
return tx.db
|
|
21
|
+
.insertInto('verification')
|
|
22
|
+
.values(verifications)
|
|
23
|
+
.onConflict((oc) => oc.doNothing())
|
|
24
|
+
.returningAll()
|
|
25
|
+
.execute();
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
async markRevoked({ uris, revokedBy, revokedAt, revokeReason, }) {
|
|
29
|
+
const now = new Date().toISOString();
|
|
30
|
+
return this.db.transaction(async (tx) => {
|
|
31
|
+
for (const uri of uris) {
|
|
32
|
+
return tx.db
|
|
33
|
+
.updateTable('verification')
|
|
34
|
+
.set({
|
|
35
|
+
revokeReason,
|
|
36
|
+
updatedAt: now,
|
|
37
|
+
revokedAt: revokedAt || now,
|
|
38
|
+
// Allow setting revokedBy to a moderator/verifier DID and if it isn't set, default to the author of the verification record
|
|
39
|
+
revokedBy: revokedBy || new api_1.AtUri(uri).host,
|
|
40
|
+
})
|
|
41
|
+
.where('uri', '=', uri)
|
|
42
|
+
.where('revokedAt', 'is', null)
|
|
43
|
+
.execute();
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async list({ sortDirection, cursor, createdAfter, createdBefore, issuers = [], subjects = [], isRevoked, limit = 100, }) {
|
|
48
|
+
const { ref } = this.db.db.dynamic;
|
|
49
|
+
let qb = this.db.db.selectFrom('verification').selectAll();
|
|
50
|
+
if (issuers.length) {
|
|
51
|
+
qb = qb.where('issuer', 'in', issuers);
|
|
52
|
+
}
|
|
53
|
+
if (isRevoked !== undefined) {
|
|
54
|
+
qb = qb.where('revokedAt', isRevoked ? 'is not' : 'is', null);
|
|
55
|
+
}
|
|
56
|
+
if (subjects.length) {
|
|
57
|
+
qb = qb.where('subject', 'in', subjects);
|
|
58
|
+
}
|
|
59
|
+
if (createdAfter) {
|
|
60
|
+
qb = qb.where('createdAt', '>=', createdAfter);
|
|
61
|
+
}
|
|
62
|
+
if (createdBefore) {
|
|
63
|
+
qb = qb.where('createdAt', '<=', createdBefore);
|
|
64
|
+
}
|
|
65
|
+
const keyset = new pagination_1.CreatedAtUriKeyset(ref(`createdAt`), ref('uri'));
|
|
66
|
+
const paginatedBuilder = (0, pagination_1.paginate)(qb, {
|
|
67
|
+
limit,
|
|
68
|
+
cursor,
|
|
69
|
+
keyset,
|
|
70
|
+
tryIndex: true,
|
|
71
|
+
direction: sortDirection === 'desc' ? 'desc' : 'asc',
|
|
72
|
+
});
|
|
73
|
+
const result = await paginatedBuilder.execute();
|
|
74
|
+
return { verifications: result, cursor: keyset.packFromResult(result) };
|
|
75
|
+
}
|
|
76
|
+
view(verifications, repos, profiles) {
|
|
77
|
+
return verifications.map((verification) => {
|
|
78
|
+
const issuerRepo = repos.get(verification.issuer);
|
|
79
|
+
const subjectRepo = repos.get(verification.subject);
|
|
80
|
+
const subjectProfile = profiles.get(verification.subject);
|
|
81
|
+
const issuerProfile = profiles.get(verification.issuer);
|
|
82
|
+
return {
|
|
83
|
+
$type: 'tools.ozone.verification.defs#verificationView',
|
|
84
|
+
uri: verification.uri,
|
|
85
|
+
issuer: verification.issuer,
|
|
86
|
+
subject: verification.subject,
|
|
87
|
+
createdAt: verification.createdAt,
|
|
88
|
+
displayName: verification.displayName,
|
|
89
|
+
handle: verification.handle,
|
|
90
|
+
updatedAt: verification.updatedAt || undefined,
|
|
91
|
+
revokedAt: verification.revokedAt || undefined,
|
|
92
|
+
revokedBy: verification.revokedBy || undefined,
|
|
93
|
+
revokeReason: verification.revokeReason || undefined,
|
|
94
|
+
issuerRepo,
|
|
95
|
+
subjectRepo,
|
|
96
|
+
subjectProfile: subjectProfile
|
|
97
|
+
? {
|
|
98
|
+
$type: 'app.bsky.actor.defs#profileViewDetailed',
|
|
99
|
+
...subjectProfile,
|
|
100
|
+
}
|
|
101
|
+
: undefined,
|
|
102
|
+
issuerProfile: issuerProfile
|
|
103
|
+
? {
|
|
104
|
+
$type: 'app.bsky.actor.defs#profileViewDetailed',
|
|
105
|
+
...issuerProfile,
|
|
106
|
+
}
|
|
107
|
+
: undefined,
|
|
108
|
+
};
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
async getFirehoseCursor() {
|
|
112
|
+
const entry = await this.db.db
|
|
113
|
+
.selectFrom('firehose_cursor')
|
|
114
|
+
.select('cursor')
|
|
115
|
+
.where('service', '=', 'verification')
|
|
116
|
+
.executeTakeFirst();
|
|
117
|
+
return entry?.cursor || null;
|
|
118
|
+
}
|
|
119
|
+
createFirehoseCursor() {
|
|
120
|
+
return this.db.db
|
|
121
|
+
.insertInto('firehose_cursor')
|
|
122
|
+
.values({
|
|
123
|
+
service: 'verification',
|
|
124
|
+
cursor: null,
|
|
125
|
+
})
|
|
126
|
+
.onConflict((oc) => oc.doNothing())
|
|
127
|
+
.execute();
|
|
128
|
+
}
|
|
129
|
+
async updateFirehoseCursor(cursor) {
|
|
130
|
+
const updated = await this.db.db
|
|
131
|
+
.updateTable('firehose_cursor')
|
|
132
|
+
.set({ cursor })
|
|
133
|
+
.where('service', '=', 'verification')
|
|
134
|
+
.where((qb) => qb.where('cursor', '<', cursor).orWhere('cursor', 'is', null))
|
|
135
|
+
.returningAll()
|
|
136
|
+
.executeTakeFirst();
|
|
137
|
+
return updated?.cursor;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.VerificationService = VerificationService;
|
|
141
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/verification/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { $Typed, ToolsOzoneModerationDefs } from '@atproto/api';
|
|
2
|
+
import { AppContext } from '../context';
|
|
3
|
+
import { ModerationService } from '../mod-service';
|
|
4
|
+
import { ParsedLabelers } from '../util';
|
|
5
|
+
export declare const getReposForVerifications: (ctx: AppContext, labelers: ParsedLabelers, modService: ModerationService, dids: string[], isModerator: boolean) => Promise<Map<string, $Typed<ToolsOzoneModerationDefs.RepoViewDetail> | $Typed<ToolsOzoneModerationDefs.RepoViewNotFound>>>;
|
|
6
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/verification/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAA;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExC,eAAO,MAAM,wBAAwB,GACnC,KAAK,UAAU,EACf,UAAU,cAAc,EACxB,YAAY,iBAAiB,EAC7B,MAAM,MAAM,EAAE,EACd,aAAa,OAAO,8HAsCrB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getReposForVerifications = void 0;
|
|
4
|
+
const util_1 = require("../api/util");
|
|
5
|
+
const getReposForVerifications = async (ctx, labelers, modService, dids, isModerator) => {
|
|
6
|
+
const [partialRepos, accountInfo] = await Promise.all([
|
|
7
|
+
modService.views.repoDetails(dids, labelers),
|
|
8
|
+
(0, util_1.getPdsAccountInfos)(ctx, dids),
|
|
9
|
+
]);
|
|
10
|
+
const repos = new Map(dids.map((did) => {
|
|
11
|
+
const partialRepo = partialRepos.get(did);
|
|
12
|
+
if (!partialRepo) {
|
|
13
|
+
return [
|
|
14
|
+
did,
|
|
15
|
+
{
|
|
16
|
+
did,
|
|
17
|
+
$type: 'tools.ozone.moderation.defs#repoViewNotFound',
|
|
18
|
+
},
|
|
19
|
+
];
|
|
20
|
+
}
|
|
21
|
+
return [
|
|
22
|
+
did,
|
|
23
|
+
{
|
|
24
|
+
...(0, util_1.addAccountInfoToRepoViewDetail)(partialRepo, accountInfo.get(did) || null, isModerator),
|
|
25
|
+
$type: 'tools.ozone.moderation.defs#repoViewDetail',
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
}));
|
|
29
|
+
return repos;
|
|
30
|
+
};
|
|
31
|
+
exports.getReposForVerifications = getReposForVerifications;
|
|
32
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/verification/util.ts"],"names":[],"mappings":";;;AACA,sCAAgF;AAKzE,MAAM,wBAAwB,GAAG,KAAK,EAC3C,GAAe,EACf,QAAwB,EACxB,UAA6B,EAC7B,IAAc,EACd,WAAoB,EACpB,EAAE;IACF,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC5C,IAAA,yBAAkB,EAAC,GAAG,EAAE,IAAI,CAAC;KAC9B,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,IAAI,GAAG,CAKnB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACf,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO;gBACL,GAAG;gBACH;oBACE,GAAG;oBACH,KAAK,EAAE,8CAA8C;iBACtD;aACF,CAAA;QACH,CAAC;QACD,OAAO;YACL,GAAG;YACH;gBACE,GAAG,IAAA,qCAA8B,EAC/B,WAAW,EACX,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAC5B,WAAW,CACZ;gBACD,KAAK,EAAE,4CAA4C;aACpD;SACF,CAAA;IACH,CAAC,CAAC,CACH,CAAA;IAED,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AA3CY,QAAA,wBAAwB,4BA2CpC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/ozone",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.108",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Backend service for moderating the Bluesky network.",
|
|
6
6
|
"keywords": [
|
|
@@ -34,14 +34,15 @@
|
|
|
34
34
|
"typed-emitter": "^2.1.0",
|
|
35
35
|
"uint8arrays": "3.0.0",
|
|
36
36
|
"undici": "^6.14.1",
|
|
37
|
-
"
|
|
37
|
+
"ws": "^8.12.0",
|
|
38
|
+
"@atproto/api": "^0.15.5",
|
|
38
39
|
"@atproto/common": "^0.4.10",
|
|
39
40
|
"@atproto/crypto": "^0.4.4",
|
|
40
41
|
"@atproto/identity": "^0.4.7",
|
|
41
42
|
"@atproto/lexicon": "^0.4.10",
|
|
42
43
|
"@atproto/syntax": "^0.4.0",
|
|
43
44
|
"@atproto/xrpc": "^0.6.12",
|
|
44
|
-
"@atproto/xrpc-server": "^0.7.
|
|
45
|
+
"@atproto/xrpc-server": "^0.7.17"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
47
48
|
"@did-plc/server": "^0.0.1",
|
|
@@ -54,7 +55,7 @@
|
|
|
54
55
|
"ts-node": "^10.8.2",
|
|
55
56
|
"typescript": "^5.6.3",
|
|
56
57
|
"@atproto/lex-cli": "^0.8.0",
|
|
57
|
-
"@atproto/pds": "^0.4.
|
|
58
|
+
"@atproto/pds": "^0.4.134"
|
|
58
59
|
},
|
|
59
60
|
"scripts": {
|
|
60
61
|
"codegen": "lex gen-server --yes ./src/lexicon ../../lexicons/com/atproto/*/* ../../lexicons/app/bsky/*/* ../../lexicons/chat/bsky/*/* ../../lexicons/tools/ozone/*/*",
|
package/src/api/index.ts
CHANGED
|
@@ -35,6 +35,9 @@ import addMember from './team/addMember'
|
|
|
35
35
|
import deleteMember from './team/deleteMember'
|
|
36
36
|
import listMembers from './team/listMembers'
|
|
37
37
|
import updateMember from './team/updateMember'
|
|
38
|
+
import grantVerifications from './verification/grantVerifications'
|
|
39
|
+
import listVerifications from './verification/listVerifications'
|
|
40
|
+
import revokeVerifications from './verification/revokeVerifications'
|
|
38
41
|
|
|
39
42
|
export * as health from './health'
|
|
40
43
|
|
|
@@ -76,5 +79,8 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
76
79
|
removeOptions(server, ctx)
|
|
77
80
|
getReporterStats(server, ctx)
|
|
78
81
|
getSubjects(server, ctx)
|
|
82
|
+
grantVerifications(server, ctx)
|
|
83
|
+
revokeVerifications(server, ctx)
|
|
84
|
+
listVerifications(server, ctx)
|
|
79
85
|
return server
|
|
80
86
|
}
|
package/src/api/proxied.ts
CHANGED
|
@@ -6,7 +6,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
6
6
|
server.app.bsky.actor.getProfile({
|
|
7
7
|
auth: ctx.authVerifier.moderator,
|
|
8
8
|
handler: async (request) => {
|
|
9
|
-
const res = await ctx.appviewAgent.
|
|
9
|
+
const res = await ctx.appviewAgent.app.bsky.actor.getProfile(
|
|
10
10
|
request.params,
|
|
11
11
|
await ctx.appviewAuth(ids.AppBskyActorGetProfile),
|
|
12
12
|
)
|
|
@@ -20,7 +20,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
20
20
|
server.app.bsky.actor.getProfiles({
|
|
21
21
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
22
22
|
handler: async (request) => {
|
|
23
|
-
const res = await ctx.appviewAgent.
|
|
23
|
+
const res = await ctx.appviewAgent.app.bsky.actor.getProfiles(
|
|
24
24
|
request.params,
|
|
25
25
|
await ctx.appviewAuth(ids.AppBskyActorGetProfiles),
|
|
26
26
|
)
|
|
@@ -34,7 +34,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
34
34
|
server.app.bsky.feed.getAuthorFeed({
|
|
35
35
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
36
36
|
handler: async (request) => {
|
|
37
|
-
const res = await ctx.appviewAgent.
|
|
37
|
+
const res = await ctx.appviewAgent.app.bsky.feed.getAuthorFeed(
|
|
38
38
|
request.params,
|
|
39
39
|
await ctx.appviewAuth(ids.AppBskyFeedGetAuthorFeed),
|
|
40
40
|
)
|
|
@@ -48,7 +48,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
48
48
|
server.app.bsky.feed.searchPosts({
|
|
49
49
|
auth: ctx.authVerifier.moderator,
|
|
50
50
|
handler: async (request) => {
|
|
51
|
-
const res = await ctx.appviewAgent.
|
|
51
|
+
const res = await ctx.appviewAgent.app.bsky.feed.searchPosts(
|
|
52
52
|
request.params,
|
|
53
53
|
await ctx.appviewAuth(ids.AppBskyFeedSearchPosts),
|
|
54
54
|
)
|
|
@@ -62,7 +62,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
62
62
|
server.app.bsky.feed.getPostThread({
|
|
63
63
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
64
64
|
handler: async (request) => {
|
|
65
|
-
const res = await ctx.appviewAgent.
|
|
65
|
+
const res = await ctx.appviewAgent.app.bsky.feed.getPostThread(
|
|
66
66
|
request.params,
|
|
67
67
|
await ctx.appviewAuth(ids.AppBskyFeedGetPostThread),
|
|
68
68
|
)
|
|
@@ -76,7 +76,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
76
76
|
server.app.bsky.feed.getFeedGenerator({
|
|
77
77
|
auth: ctx.authVerifier.moderator,
|
|
78
78
|
handler: async (request) => {
|
|
79
|
-
const res = await ctx.appviewAgent.
|
|
79
|
+
const res = await ctx.appviewAgent.app.bsky.feed.getFeedGenerator(
|
|
80
80
|
request.params,
|
|
81
81
|
await ctx.appviewAuth(ids.AppBskyFeedGetFeedGenerator),
|
|
82
82
|
)
|
|
@@ -90,7 +90,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
90
90
|
server.app.bsky.graph.getFollows({
|
|
91
91
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
92
92
|
handler: async (request) => {
|
|
93
|
-
const res = await ctx.appviewAgent.
|
|
93
|
+
const res = await ctx.appviewAgent.app.bsky.graph.getFollows(
|
|
94
94
|
request.params,
|
|
95
95
|
await ctx.appviewAuth(ids.AppBskyGraphGetFollows),
|
|
96
96
|
)
|
|
@@ -104,7 +104,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
104
104
|
server.app.bsky.graph.getFollowers({
|
|
105
105
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
106
106
|
handler: async (request) => {
|
|
107
|
-
const res = await ctx.appviewAgent.
|
|
107
|
+
const res = await ctx.appviewAgent.app.bsky.graph.getFollowers(
|
|
108
108
|
request.params,
|
|
109
109
|
await ctx.appviewAuth(ids.AppBskyGraphGetFollowers),
|
|
110
110
|
)
|
|
@@ -118,7 +118,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
118
118
|
server.app.bsky.graph.getList({
|
|
119
119
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
120
120
|
handler: async (request) => {
|
|
121
|
-
const res = await ctx.appviewAgent.
|
|
121
|
+
const res = await ctx.appviewAgent.app.bsky.graph.getList(
|
|
122
122
|
request.params,
|
|
123
123
|
await ctx.appviewAuth(ids.AppBskyGraphGetList),
|
|
124
124
|
)
|
|
@@ -132,7 +132,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
132
132
|
server.app.bsky.graph.getLists({
|
|
133
133
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
134
134
|
handler: async (request) => {
|
|
135
|
-
const res = await ctx.appviewAgent.
|
|
135
|
+
const res = await ctx.appviewAgent.app.bsky.graph.getLists(
|
|
136
136
|
request.params,
|
|
137
137
|
await ctx.appviewAuth(ids.AppBskyGraphGetLists),
|
|
138
138
|
)
|
|
@@ -149,7 +149,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
149
149
|
if (!ctx.pdsAgent) {
|
|
150
150
|
throw new Error('PDS not configured')
|
|
151
151
|
}
|
|
152
|
-
const res = await ctx.pdsAgent.
|
|
152
|
+
const res = await ctx.pdsAgent.com.atproto.admin.searchAccounts(
|
|
153
153
|
request.params,
|
|
154
154
|
await ctx.pdsAuth(ids.ComAtprotoAdminSearchAccounts),
|
|
155
155
|
)
|
|
@@ -160,6 +160,23 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
160
160
|
},
|
|
161
161
|
})
|
|
162
162
|
|
|
163
|
+
server.tools.ozone.hosting.getAccountHistory({
|
|
164
|
+
auth: ctx.authVerifier.moderator,
|
|
165
|
+
handler: async (request) => {
|
|
166
|
+
if (!ctx.pdsAgent) {
|
|
167
|
+
throw new Error('PDS not configured')
|
|
168
|
+
}
|
|
169
|
+
const res = await ctx.pdsAgent.tools.ozone.hosting.getAccountHistory(
|
|
170
|
+
request.params,
|
|
171
|
+
await ctx.pdsAuth(ids.ToolsOzoneHostingGetAccountHistory),
|
|
172
|
+
)
|
|
173
|
+
return {
|
|
174
|
+
encoding: 'application/json',
|
|
175
|
+
body: res.data,
|
|
176
|
+
}
|
|
177
|
+
},
|
|
178
|
+
})
|
|
179
|
+
|
|
163
180
|
server.tools.ozone.signature.findRelatedAccounts({
|
|
164
181
|
auth: ctx.authVerifier.moderator,
|
|
165
182
|
handler: async (request) => {
|
|
@@ -228,7 +245,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
228
245
|
server.app.bsky.graph.getStarterPacks({
|
|
229
246
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
230
247
|
handler: async (request) => {
|
|
231
|
-
const res = await ctx.appviewAgent.
|
|
248
|
+
const res = await ctx.appviewAgent.app.bsky.graph.getStarterPacks(
|
|
232
249
|
request.params,
|
|
233
250
|
await ctx.appviewAuth(ids.AppBskyGraphGetStarterPacks),
|
|
234
251
|
)
|
|
@@ -242,11 +259,10 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
242
259
|
server.app.bsky.graph.getActorStarterPacks({
|
|
243
260
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
244
261
|
handler: async (request) => {
|
|
245
|
-
const res =
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
)
|
|
262
|
+
const res = await ctx.appviewAgent.app.bsky.graph.getActorStarterPacks(
|
|
263
|
+
request.params,
|
|
264
|
+
await ctx.appviewAuth(ids.AppBskyGraphGetActorStarterPacks),
|
|
265
|
+
)
|
|
250
266
|
return {
|
|
251
267
|
encoding: 'application/json',
|
|
252
268
|
body: res.data,
|
|
@@ -257,7 +273,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
257
273
|
server.app.bsky.feed.getLikes({
|
|
258
274
|
auth: ctx.authVerifier.modOrAdminToken,
|
|
259
275
|
handler: async (request) => {
|
|
260
|
-
const res = await ctx.appviewAgent.
|
|
276
|
+
const res = await ctx.appviewAgent.app.bsky.feed.getLikes(
|
|
261
277
|
request.params,
|
|
262
278
|
await ctx.appviewAuth(ids.AppBskyFeedGetLikes),
|
|
263
279
|
)
|
|
@@ -271,7 +287,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
271
287
|
server.app.bsky.feed.getRepostedBy({
|
|
272
288
|
auth: ctx.authVerifier.moderator,
|
|
273
289
|
handler: async (request) => {
|
|
274
|
-
const res = await ctx.appviewAgent.
|
|
290
|
+
const res = await ctx.appviewAgent.app.bsky.feed.getRepostedBy(
|
|
275
291
|
request.params,
|
|
276
292
|
await ctx.appviewAuth(ids.AppBskyFeedGetRepostedBy),
|
|
277
293
|
)
|
|
@@ -285,11 +301,10 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
285
301
|
server.app.bsky.actor.searchActorsTypeahead({
|
|
286
302
|
auth: ctx.authVerifier.moderator,
|
|
287
303
|
handler: async (request) => {
|
|
288
|
-
const res =
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
)
|
|
304
|
+
const res = await ctx.appviewAgent.app.bsky.actor.searchActorsTypeahead(
|
|
305
|
+
request.params,
|
|
306
|
+
await ctx.appviewAuth(ids.AppBskyActorSearchActorsTypeahead),
|
|
307
|
+
)
|
|
293
308
|
return {
|
|
294
309
|
encoding: 'application/json',
|
|
295
310
|
body: res.data,
|
|
@@ -32,6 +32,7 @@ export default function (server: Server, ctx: AppContext) {
|
|
|
32
32
|
'tools.ozone.team.defs#roleModerator',
|
|
33
33
|
'tools.ozone.team.defs#roleTriage',
|
|
34
34
|
'tools.ozone.team.defs#roleAdmin',
|
|
35
|
+
'tools.ozone.team.defs#roleVerifier',
|
|
35
36
|
]
|
|
36
37
|
|
|
37
38
|
if (access.type !== 'admin_token' && !access.isAdmin) {
|
|
@@ -118,6 +118,7 @@ const getRolesForInstanceOption = (
|
|
|
118
118
|
ToolsOzoneTeamDefs.ROLEADMIN,
|
|
119
119
|
ToolsOzoneTeamDefs.ROLEMODERATOR,
|
|
120
120
|
ToolsOzoneTeamDefs.ROLETRIAGE,
|
|
121
|
+
ToolsOzoneTeamDefs.ROLEVERIFIER,
|
|
121
122
|
]
|
|
122
123
|
if (access.type === 'admin_token') {
|
|
123
124
|
return fullPermission
|
|
@@ -131,6 +132,10 @@ const getRolesForInstanceOption = (
|
|
|
131
132
|
return [ToolsOzoneTeamDefs.ROLEMODERATOR, ToolsOzoneTeamDefs.ROLETRIAGE]
|
|
132
133
|
}
|
|
133
134
|
|
|
135
|
+
if (access.isVerifier) {
|
|
136
|
+
return [ToolsOzoneTeamDefs.ROLEVERIFIER]
|
|
137
|
+
}
|
|
138
|
+
|
|
134
139
|
return [ToolsOzoneTeamDefs.ROLETRIAGE]
|
|
135
140
|
}
|
|
136
141
|
|
|
@@ -143,6 +148,8 @@ const getManagerRole = (role?: string) => {
|
|
|
143
148
|
managerRole = ToolsOzoneTeamDefs.ROLEMODERATOR
|
|
144
149
|
} else if (role === ToolsOzoneTeamDefs.ROLETRIAGE) {
|
|
145
150
|
managerRole = ToolsOzoneTeamDefs.ROLETRIAGE
|
|
151
|
+
} else if (role === ToolsOzoneTeamDefs.ROLEVERIFIER) {
|
|
152
|
+
managerRole = ToolsOzoneTeamDefs.ROLEVERIFIER
|
|
146
153
|
}
|
|
147
154
|
|
|
148
155
|
return managerRole
|