From a2a3867c1767a41a99d6d645103cb12fa0ff339a Mon Sep 17 00:00:00 2001 From: nick-funk Date: Wed, 29 Nov 2023 11:36:28 -0700 Subject: [PATCH 1/2] handle possibly undefined dsa settings on tenant --- server/src/core/server/cron/accountDeletion.ts | 2 +- server/src/core/server/graph/mutators/Users.ts | 2 +- server/src/core/server/models/settings/settings.ts | 7 +++++++ .../server/services/comments/moderation/moderate.spec.ts | 6 +++++- .../core/server/services/comments/moderation/moderate.ts | 2 +- .../server/services/comments/pipeline/phases/external.ts | 2 +- 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/server/src/core/server/cron/accountDeletion.ts b/server/src/core/server/cron/accountDeletion.ts index 42f013d341..e57be6a35b 100644 --- a/server/src/core/server/cron/accountDeletion.ts +++ b/server/src/core/server/cron/accountDeletion.ts @@ -75,7 +75,7 @@ const deleteScheduledAccounts: ScheduledJobCommand = async ({ user.id, tenant.id, now, - tenant.dsa.enabled + tenant.dsa?.enabled ); // If the user has an email, then send them a confirmation that their account diff --git a/server/src/core/server/graph/mutators/Users.ts b/server/src/core/server/graph/mutators/Users.ts index 3f95e8869c..73b3d65428 100644 --- a/server/src/core/server/graph/mutators/Users.ts +++ b/server/src/core/server/graph/mutators/Users.ts @@ -189,7 +189,7 @@ export const Users = (ctx: GraphContext) => ({ input.userID, ctx.tenant.id, ctx.now, - ctx.tenant.dsa.enabled + ctx.tenant.dsa?.enabled ); }, cancelAccountDeletion: async ( diff --git a/server/src/core/server/models/settings/settings.ts b/server/src/core/server/models/settings/settings.ts index 1d99c2c9eb..d56eca99d1 100644 --- a/server/src/core/server/models/settings/settings.ts +++ b/server/src/core/server/models/settings/settings.ts @@ -2,6 +2,7 @@ import { GQLAuth, GQLAuthenticationTargetFilter, GQLCOMMENT_BODY_FORMAT, + GQLDSA_METHOD_OF_REDRESS, GQLEmailConfiguration, GQLFacebookAuthIntegration, GQLGoogleAuthIntegration, @@ -421,8 +422,14 @@ export const defaultRTEConfiguration: RTEConfiguration = { export interface DSAConfiguration { enabled: boolean; + methodOfRedress: { + method: GQLDSA_METHOD_OF_REDRESS; + }; } export const defaultDSAConfiguration: DSAConfiguration = { enabled: false, + methodOfRedress: { + method: GQLDSA_METHOD_OF_REDRESS.NONE, + }, }; diff --git a/server/src/core/server/services/comments/moderation/moderate.spec.ts b/server/src/core/server/services/comments/moderation/moderate.spec.ts index 921d061c58..e9bc849995 100644 --- a/server/src/core/server/services/comments/moderation/moderate.spec.ts +++ b/server/src/core/server/services/comments/moderation/moderate.spec.ts @@ -13,6 +13,7 @@ import moderate, { Moderate } from "./moderate"; import { GQLCOMMENT_STATUS, + GQLDSA_METHOD_OF_REDRESS, GQLUSER_ROLE, } from "coral-server/graph/schema/__generated__/types"; import { I18n } from "coral-server/services/i18n"; @@ -23,7 +24,10 @@ jest.mock("coral-server/models/action/moderation/comment"); it("requires a valid rejection reason if dsaFeatures are enabled", async () => { const tenant = createTenantFixture({ - dsa: { enabled: true }, + dsa: { + enabled: true, + methodOfRedress: { method: GQLDSA_METHOD_OF_REDRESS.NONE }, + }, }); const config = {} as Config; const story = createStoryFixture({ tenantID: tenant.id }); diff --git a/server/src/core/server/services/comments/moderation/moderate.ts b/server/src/core/server/services/comments/moderation/moderate.ts index 613bdecd4a..45e6abaff4 100644 --- a/server/src/core/server/services/comments/moderation/moderate.ts +++ b/server/src/core/server/services/comments/moderation/moderate.ts @@ -45,7 +45,7 @@ export default async function moderate( } ) { if ( - tenant.dsa.enabled && + tenant.dsa?.enabled && input.status === GQLCOMMENT_STATUS.REJECTED && !input.rejectionReason ) { diff --git a/server/src/core/server/services/comments/pipeline/phases/external.ts b/server/src/core/server/services/comments/pipeline/phases/external.ts index 93f7c8b272..bfc8103941 100644 --- a/server/src/core/server/services/comments/pipeline/phases/external.ts +++ b/server/src/core/server/services/comments/pipeline/phases/external.ts @@ -287,7 +287,7 @@ export const external: IntermediateModerationPhase = async (ctx) => { !ctx.tenant.integrations.external || ctx.tenant.integrations.external.phases.length === 0 || // (marcushaddon) DSA and external moderation are mutually exclusive for the time being - ctx.tenant.dsa.enabled + ctx.tenant.dsa?.enabled ) { return; } From 177a423339dbd081361a9a94706c5e0a7668b162 Mon Sep 17 00:00:00 2001 From: nick-funk Date: Wed, 29 Nov 2023 11:53:24 -0700 Subject: [PATCH 2/2] bump version 8.6.1 --- client/package-lock.json | 4 ++-- client/package.json | 2 +- common/package-lock.json | 4 ++-- common/package.json | 2 +- config/package-lock.json | 4 ++-- config/package.json | 2 +- server/package-lock.json | 4 ++-- server/package.json | 2 +- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index f91890424f..8fcf5140f5 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "@coralproject/talk", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@coralproject/talk", - "version": "8.6.0", + "version": "8.6.1", "license": "Apache-2.0", "dependencies": { "@ampproject/toolbox-cache-url": "^2.9.0", diff --git a/client/package.json b/client/package.json index 29fbbea7a6..7fea257341 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "@coralproject/talk", - "version": "8.6.0", + "version": "8.6.1", "author": "The Coral Project", "homepage": "https://coralproject.net/", "sideEffects": [ diff --git a/common/package-lock.json b/common/package-lock.json index 1c031b23b9..6c4f4c3d8e 100644 --- a/common/package-lock.json +++ b/common/package-lock.json @@ -1,12 +1,12 @@ { "name": "common", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "common", - "version": "8.6.0", + "version": "8.6.1", "license": "ISC", "dependencies": { "coral-config": "../config/dist", diff --git a/common/package.json b/common/package.json index af330facbc..07995ef7a4 100644 --- a/common/package.json +++ b/common/package.json @@ -1,6 +1,6 @@ { "name": "common", - "version": "8.6.0", + "version": "8.6.1", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/config/package-lock.json b/config/package-lock.json index f2690a6509..e73b796305 100644 --- a/config/package-lock.json +++ b/config/package-lock.json @@ -1,12 +1,12 @@ { "name": "common", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "common", - "version": "8.6.0", + "version": "8.6.1", "license": "ISC", "dependencies": { "typescript": "^3.9.5" diff --git a/config/package.json b/config/package.json index e9fd766e1e..e68af09556 100644 --- a/config/package.json +++ b/config/package.json @@ -1,6 +1,6 @@ { "name": "common", - "version": "8.6.0", + "version": "8.6.1", "description": "", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/server/package-lock.json b/server/package-lock.json index 1f997418f3..b9c0d53ca9 100644 --- a/server/package-lock.json +++ b/server/package-lock.json @@ -1,12 +1,12 @@ { "name": "@coralproject/talk", - "version": "8.6.0", + "version": "8.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@coralproject/talk", - "version": "8.6.0", + "version": "8.6.1", "license": "Apache-2.0", "dependencies": { "@ampproject/toolbox-cache-url": "^2.9.0", diff --git a/server/package.json b/server/package.json index 7ca894b53c..c391db60a2 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "@coralproject/talk", - "version": "8.6.0", + "version": "8.6.1", "author": "The Coral Project", "homepage": "https://coralproject.net/", "sideEffects": [