@atproto/ozone 0.1.107 → 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 +10 -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/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 +12 -0
- package/dist/lexicon/index.d.ts.map +1 -1
- package/dist/lexicon/index.js +33 -1
- package/dist/lexicon/index.js.map +1 -1
- package/dist/lexicon/lexicons.d.ts +672 -12
- package/dist/lexicon/lexicons.d.ts.map +1 -1
- package/dist/lexicon/lexicons.js +353 -0
- package/dist/lexicon/lexicons.js.map +1 -1
- 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/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/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 +47 -0
- package/src/lexicon/lexicons.ts +372 -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/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/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
package/dist/team/index.js
CHANGED
|
@@ -43,6 +43,7 @@ class TeamService {
|
|
|
43
43
|
if (roles !== undefined) {
|
|
44
44
|
const knownRoles = roles.filter((r) => r === 'tools.ozone.team.defs#roleAdmin' ||
|
|
45
45
|
r === 'tools.ozone.team.defs#roleModerator' ||
|
|
46
|
+
r === 'tools.ozone.team.defs#roleVerifier' ||
|
|
46
47
|
r === 'tools.ozone.team.defs#roleTriage');
|
|
47
48
|
// Optimization: no need to query to know that no values will be returned
|
|
48
49
|
if (!knownRoles.length)
|
|
@@ -138,10 +139,12 @@ class TeamService {
|
|
|
138
139
|
const isAdmin = member?.role === 'tools.ozone.team.defs#roleAdmin';
|
|
139
140
|
const isModerator = isAdmin || member?.role === 'tools.ozone.team.defs#roleModerator';
|
|
140
141
|
const isTriage = isModerator || member?.role === 'tools.ozone.team.defs#roleTriage';
|
|
142
|
+
const isVerifier = isAdmin || member?.role === 'tools.ozone.team.defs#roleVerifier';
|
|
141
143
|
return {
|
|
142
144
|
isModerator,
|
|
143
145
|
isAdmin,
|
|
144
146
|
isTriage,
|
|
147
|
+
isVerifier,
|
|
145
148
|
};
|
|
146
149
|
}
|
|
147
150
|
// getProfiles() only allows 25 DIDs at a time so we need to query in chunks
|
package/dist/team/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/team/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/team/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { Selectable } from 'kysely';
|
|
2
|
+
import { Agent } from '@atproto/api';
|
|
3
|
+
import { VerifierConfig } from '../config';
|
|
4
|
+
import { Verification } from '../db/schema/verification';
|
|
5
|
+
export type VerificationInput = {
|
|
6
|
+
displayName: string;
|
|
7
|
+
handle: string;
|
|
8
|
+
subject: string;
|
|
9
|
+
createdAt?: string;
|
|
10
|
+
};
|
|
11
|
+
export type VerificationIssuerCreator = (verifierConfig: VerifierConfig) => VerificationIssuer;
|
|
12
|
+
export declare class VerificationIssuer {
|
|
13
|
+
private verifierConfig;
|
|
14
|
+
private session;
|
|
15
|
+
private agent;
|
|
16
|
+
constructor(verifierConfig: VerifierConfig);
|
|
17
|
+
static creator(): (verifierConfig: VerifierConfig) => VerificationIssuer;
|
|
18
|
+
getAgent(): Promise<Agent>;
|
|
19
|
+
verify(verifications: VerificationInput[]): Promise<{
|
|
20
|
+
grantedVerifications: Selectable<Verification>[];
|
|
21
|
+
failedVerifications: {
|
|
22
|
+
$type: "tools.ozone.verification.grantVerifications#grantError";
|
|
23
|
+
subject: string;
|
|
24
|
+
error: string;
|
|
25
|
+
}[];
|
|
26
|
+
}>;
|
|
27
|
+
revoke({ uris }: {
|
|
28
|
+
uris: string[];
|
|
29
|
+
}): Promise<{
|
|
30
|
+
revokedVerifications: string[];
|
|
31
|
+
failedRevocations: {
|
|
32
|
+
uri: string;
|
|
33
|
+
error: string;
|
|
34
|
+
}[];
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=issuer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issuer.d.ts","sourceRoot":"","sources":["../../src/verification/issuer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AACnC,OAAO,EAAE,KAAK,EAA4B,MAAM,cAAc,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,yBAAyB,GAAG,CACtC,cAAc,EAAE,cAAc,KAC3B,kBAAkB,CAAA;AAEvB,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,cAAc;IAFlC,OAAO,CAAC,OAAO,CAA0D;IACzE,OAAO,CAAC,KAAK,CAA0B;gBACnB,cAAc,EAAE,cAAc;IAElD,MAAM,CAAC,OAAO,KACJ,gBAAgB,cAAc;IAIlC,QAAQ;IAuBR,MAAM,CAAC,aAAa,EAAE,iBAAiB,EAAE;;;mBAGpC,wDAAwD;qBACtD,MAAM;mBACR,MAAM;;;IA4CX,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE;;;iBAED,MAAM;mBAAS,MAAM;;;CAkC9D"}
|
|
@@ -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
|
}
|
|
@@ -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
|
package/src/api/util.ts
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
ROLEADMIN,
|
|
27
27
|
ROLEMODERATOR,
|
|
28
28
|
ROLETRIAGE,
|
|
29
|
+
ROLEVERIFIER,
|
|
29
30
|
} from '../lexicon/types/tools/ozone/team/defs'
|
|
30
31
|
import { ModerationSubjectStatusRow } from '../mod-service/types'
|
|
31
32
|
|
|
@@ -184,4 +185,9 @@ export const getMemberRole = (role: string) => {
|
|
|
184
185
|
throw new InvalidRequestError('Invalid member role')
|
|
185
186
|
}
|
|
186
187
|
|
|
187
|
-
const memberRoles = new Set([
|
|
188
|
+
const memberRoles = new Set([
|
|
189
|
+
ROLEADMIN,
|
|
190
|
+
ROLEMODERATOR,
|
|
191
|
+
ROLETRIAGE,
|
|
192
|
+
ROLEVERIFIER,
|
|
193
|
+
])
|