@atproto/ozone
Version:
Backend service for moderating the Bluesky network.
62 lines • 3.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.settingValidators = void 0;
const xrpc_server_1 = require("@atproto/xrpc-server");
const constants_1 = require("./constants");
exports.settingValidators = new Map([
[
constants_1.ProtectedTagSettingKey,
async (setting) => {
if (setting.managerRole !== 'tools.ozone.team.defs#roleAdmin') {
throw new xrpc_server_1.InvalidRequestError('Only admins should be able to configure protected tags');
}
if (typeof setting.value !== 'object') {
throw new xrpc_server_1.InvalidRequestError('Invalid value');
}
for (const [key, val] of Object.entries(setting.value)) {
if (!val || typeof val !== 'object') {
throw new xrpc_server_1.InvalidRequestError(`Invalid configuration for tag ${key}`);
}
if (!val['roles'] && !val['moderators']) {
throw new xrpc_server_1.InvalidRequestError(`Must define who a list of moderators or a role who can action subjects with ${key} tag`);
}
if (val['roles']) {
if (!Array.isArray(val['roles'])) {
throw new xrpc_server_1.InvalidRequestError(`Roles must be an array of moderator roles for tag ${key}`);
}
if (!val['roles']?.length) {
throw new xrpc_server_1.InvalidRequestError(`Must define at least one role for tag ${key}`);
}
}
if (val['moderators']) {
if (!Array.isArray(val['moderators'])) {
throw new xrpc_server_1.InvalidRequestError(`Moderators must be an array of moderator DIDs for tag ${key}`);
}
if (!val['moderators']?.length) {
throw new xrpc_server_1.InvalidRequestError(`Must define at least one moderator DID for tag ${key}`);
}
}
}
},
],
[
constants_1.PolicyListSettingKey,
async (setting) => {
if (setting.managerRole !== 'tools.ozone.team.defs#roleAdmin') {
throw new xrpc_server_1.InvalidRequestError('Only admins should be able to manage policy list');
}
if (typeof setting.value !== 'object') {
throw new xrpc_server_1.InvalidRequestError('Invalid value');
}
for (const [key, val] of Object.entries(setting.value)) {
if (!val || typeof val !== 'object') {
throw new xrpc_server_1.InvalidRequestError(`Invalid configuration for policy ${key}`);
}
if (!val['name'] || !val['description']) {
throw new xrpc_server_1.InvalidRequestError(`Must define a name and description for policy ${key}`);
}
}
},
],
]);
//# sourceMappingURL=validators.js.map