From 08779ac45538ece6cf4c0d10ddf0cb7f38f21e5a Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Fri, 15 Nov 2024 13:40:20 -0500 Subject: [PATCH] dev: make share feature flag reflect user state --- src/backend/src/services/ShareService.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/backend/src/services/ShareService.js b/src/backend/src/services/ShareService.js index 0711d4fc6..8c25108d0 100644 --- a/src/backend/src/services/ShareService.js +++ b/src/backend/src/services/ShareService.js @@ -42,8 +42,14 @@ class ShareService extends BaseService { // about whether or not a user has access to this feature const svc_featureFlag = this.services.get('feature-flag'); svc_featureFlag.register('share', { - $: 'config-flag', - value: true + $: 'function-flag', + fn: async ({ actor }) => { + const user = actor.type.user; + if ( ! user ) { + throw new Error('expected user'); + } + return !! user.email_confirmed; + } }); } @@ -264,6 +270,13 @@ class ShareService extends BaseService { if ( ! (actor.type instanceof UserActorType) ) { throw APIError.create('forbidden'); } + + if ( ! actor.type.user.email_confirmed ) { + throw APIError.create('email_must_be_confirmed', null, { + action: 'share something', + }); + } + return await share_sequence.call(this, { actor, req, res, });