From 935ebaf60a47ea3eddc78fe8a2ac14d00d5e3be3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerg=C5=91=20Jedlicska?= Date: Thu, 27 Jul 2023 17:30:52 +0200 Subject: [PATCH] feat(server): add guest mode as server info field --- .../server/assets/core/typedefs/server.graphql | 2 ++ .../modules/core/graph/generated/graphql.ts | 3 +++ packages/server/modules/core/helpers/types.ts | 1 + .../migrations/20230727150957_serverGuestMode.ts | 16 ++++++++++++++++ packages/server/modules/core/services/generic.js | 5 ++++- .../server/test/graphql/generated/graphql.ts | 2 ++ 6 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 packages/server/modules/core/migrations/20230727150957_serverGuestMode.ts diff --git a/packages/server/assets/core/typedefs/server.graphql b/packages/server/assets/core/typedefs/server.graphql index 0fa9f811c..db1b00e94 100644 --- a/packages/server/assets/core/typedefs/server.graphql +++ b/packages/server/assets/core/typedefs/server.graphql @@ -15,6 +15,7 @@ type ServerInfo { roles: [Role]! scopes: [Scope]! inviteOnly: Boolean + guestModeEnabled: Boolean! version: String } @@ -48,4 +49,5 @@ input ServerInfoUpdateInput { adminContact: String termsOfService: String inviteOnly: Boolean + guestModeEnabled: Boolean } diff --git a/packages/server/modules/core/graph/generated/graphql.ts b/packages/server/modules/core/graph/generated/graphql.ts index e27170db0..d25e36be6 100644 --- a/packages/server/modules/core/graph/generated/graphql.ts +++ b/packages/server/modules/core/graph/generated/graphql.ts @@ -1846,6 +1846,7 @@ export type ServerInfo = { canonicalUrl?: Maybe; company?: Maybe; description?: Maybe; + guestModeEnabled: Scalars['Boolean']; inviteOnly?: Maybe; name: Scalars['String']; roles: Array>; @@ -1858,6 +1859,7 @@ export type ServerInfoUpdateInput = { adminContact?: InputMaybe; company?: InputMaybe; description?: InputMaybe; + guestModeEnabled?: InputMaybe; inviteOnly?: InputMaybe; name: Scalars['String']; termsOfService?: InputMaybe; @@ -3652,6 +3654,7 @@ export type ServerInfoResolvers, ParentType, ContextType>; company?: Resolver, ParentType, ContextType>; description?: Resolver, ParentType, ContextType>; + guestModeEnabled?: Resolver; inviteOnly?: Resolver, ParentType, ContextType>; name?: Resolver; roles?: Resolver>, ParentType, ContextType>; diff --git a/packages/server/modules/core/helpers/types.ts b/packages/server/modules/core/helpers/types.ts index 1364dd524..8f8be2c91 100644 --- a/packages/server/modules/core/helpers/types.ts +++ b/packages/server/modules/core/helpers/types.ts @@ -73,6 +73,7 @@ export type ServerConfigRecord = { canonicalUrl: string completed: boolean inviteOnly: boolean + guestModeEnabled: boolean } export type ServerInfo = ServerConfigRecord & { diff --git a/packages/server/modules/core/migrations/20230727150957_serverGuestMode.ts b/packages/server/modules/core/migrations/20230727150957_serverGuestMode.ts new file mode 100644 index 000000000..1ba1e7eda --- /dev/null +++ b/packages/server/modules/core/migrations/20230727150957_serverGuestMode.ts @@ -0,0 +1,16 @@ +import { Knex } from 'knex' + +const TABLE_NAME = 'server_config' +const COL_NAME = 'guestModeEnabled' + +export async function up(knex: Knex): Promise { + await knex.schema.alterTable(TABLE_NAME, (table) => { + table.boolean(COL_NAME).defaultTo(false).notNullable() + }) +} + +export async function down(knex: Knex): Promise { + await knex.schema.alterTable(TABLE_NAME, (table) => { + table.dropColumn(COL_NAME) + }) +} diff --git a/packages/server/modules/core/services/generic.js b/packages/server/modules/core/services/generic.js index b240049cc..ef749fdce 100644 --- a/packages/server/modules/core/services/generic.js +++ b/packages/server/modules/core/services/generic.js @@ -38,7 +38,8 @@ module.exports = { description, adminContact, termsOfService, - inviteOnly + inviteOnly, + guestModeEnabled }) { const serverInfo = await Info().select('*').first() if (!serverInfo) @@ -49,6 +50,7 @@ module.exports = { adminContact, termsOfService, inviteOnly, + guestModeEnabled, completed: true }) else @@ -59,6 +61,7 @@ module.exports = { adminContact, termsOfService, inviteOnly, + guestModeEnabled, completed: true }) } diff --git a/packages/server/test/graphql/generated/graphql.ts b/packages/server/test/graphql/generated/graphql.ts index 42d86872c..305e24a37 100644 --- a/packages/server/test/graphql/generated/graphql.ts +++ b/packages/server/test/graphql/generated/graphql.ts @@ -1837,6 +1837,7 @@ export type ServerInfo = { canonicalUrl?: Maybe; company?: Maybe; description?: Maybe; + guestModeEnabled: Scalars['Boolean']; inviteOnly?: Maybe; name: Scalars['String']; roles: Array>; @@ -1849,6 +1850,7 @@ export type ServerInfoUpdateInput = { adminContact?: InputMaybe; company?: InputMaybe; description?: InputMaybe; + guestModeEnabled?: InputMaybe; inviteOnly?: InputMaybe; name: Scalars['String']; termsOfService?: InputMaybe;