From 4ba2f97da0654f804a67fdfbf104ad05cb7bc63a Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Wed, 13 Aug 2025 15:15:36 -0400 Subject: [PATCH] fix: move temp users to 'user' group when email is confirmed Temporary users can go through email confirmation which effectively makes these users registered/permanent users. When email is confirmed they should be moved to the default group for registered users. --- src/backend/src/CoreModule.js | 3 ++ .../src/services/VerifiedGroupService.js | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 src/backend/src/services/VerifiedGroupService.js diff --git a/src/backend/src/CoreModule.js b/src/backend/src/CoreModule.js index c9e16441..afb67a30 100644 --- a/src/backend/src/CoreModule.js +++ b/src/backend/src/CoreModule.js @@ -367,6 +367,9 @@ const install = async ({ services, app, useapi, modapi }) => { const { ReferralCodeService } = require('./services/ReferralCodeService'); services.registerService('referral-code', ReferralCodeService); + + const { VerifiedGroupService } = require('./services/VerifiedGroupService'); + services.registerService('__verified-group', VerifiedGroupService); const { UserService } = require('./services/UserService'); services.registerService('user', UserService); diff --git a/src/backend/src/services/VerifiedGroupService.js b/src/backend/src/services/VerifiedGroupService.js new file mode 100644 index 00000000..f0ecfd37 --- /dev/null +++ b/src/backend/src/services/VerifiedGroupService.js @@ -0,0 +1,28 @@ +const { get_user } = require("../helpers"); +const BaseService = require("./BaseService"); + +class VerifiedGroupService extends BaseService { + async _init () { + const config = this.global_config; + + const svc_event = this.services.get('event'); + svc_event.on('user.email-confirmed', async (_, { user_uid }) => { + const user = await get_user({ uuid: user_uid }); + + // Update group + const svc_group = this.services.get('group'); + await svc_group.remove_users({ + uid: config.default_temp_group, + users: [user.username], + }); + await svc_group.add_users({ + uid: config.default_user_group, + users: [user.username] + }); + }); + } +} + +module.exports = { + VerifiedGroupService, +};