From 0470497ccb32869385e40bcee93fabf0c47a1130 Mon Sep 17 00:00:00 2001 From: Philip Molares Date: Sun, 31 Oct 2021 00:06:55 +0200 Subject: [PATCH] feat: setupSpecialGroups in bootstrap Signed-off-by: Philip Molares --- src/main.ts | 3 +++ src/utils/createSpecialGroups.ts | 34 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 src/utils/createSpecialGroups.ts diff --git a/src/main.ts b/src/main.ts index 1fcc74a35..d04da4d99 100644 --- a/src/main.ts +++ b/src/main.ts @@ -14,6 +14,7 @@ import { AuthConfig } from './config/auth.config'; import { MediaConfig } from './config/media.config'; import { ConsoleLoggerService } from './logger/console-logger.service'; import { BackendType } from './media/backends/backend-type.enum'; +import { setupSpecialGroups } from './utils/createSpecialGroups'; import { setupFrontendProxy } from './utils/frontend-integration'; import { setupSessionMiddleware } from './utils/session'; import { setupValidationPipe } from './utils/setup-pipes'; @@ -51,6 +52,8 @@ async function bootstrap(): Promise { setupFrontendProxy(app, logger); } + await setupSpecialGroups(app); + setupSessionMiddleware(app, authConfig); app.enableCors({ diff --git a/src/utils/createSpecialGroups.ts b/src/utils/createSpecialGroups.ts new file mode 100644 index 000000000..fc2be167c --- /dev/null +++ b/src/utils/createSpecialGroups.ts @@ -0,0 +1,34 @@ +/* + * SPDX-FileCopyrightText: 2021 The HedgeDoc developers (see AUTHORS file) + * + * SPDX-License-Identifier: AGPL-3.0-only + */ +import { NestExpressApplication } from '@nestjs/platform-express'; + +import { AlreadyInDBError } from '../errors/errors'; +import { GroupsService } from '../groups/groups.service'; +import { SpecialGroup } from '../groups/groups.special'; + +export async function setupSpecialGroups( + app: NestExpressApplication, +): Promise { + const groupService = app.get(GroupsService); + try { + await groupService.createGroup( + SpecialGroup.EVERYONE, + SpecialGroup.EVERYONE, + true, + ); + await groupService.createGroup( + SpecialGroup.LOGGED_IN, + SpecialGroup.LOGGED_IN, + true, + ); + } catch (e) { + if (e instanceof AlreadyInDBError) { + // It's no problem if the special groups already exist + return; + } + throw e; + } +}