/* Copyright 2025 New Vector Ltd. SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE files in the repository root for full details. */ import { z, type ZodMiniType, type input } from "zod/mini"; z.config(z.locales.en()); export const ModuleConfig = z.object({ /** * The URL of the homeserver where the guest users should be registered. This * must have the `synapse-restricted-guests-module` installed. * @example `https://synapse.local` */ guest_user_homeserver_url: z.url(), /** * The username prefix that identifies guest users. * @defaultValue `@guest-` */ guest_user_prefix: z._default(z.string().check(z.regex(/@[a-zA-Z-_1-9]+/)), "@guest-"), /** * If true, the user will be forwarded to the login page instead of to the SSO * login. This is only required if the home server has no SSO support. * @defaultValue `false` */ skip_single_sign_on: z._default(z.boolean(), false), }); export type ModuleConfig = z.infer; type ConfigSchema = ZodMiniType, z.input>; export const CONFIG_KEY = "io.element.element-web-modules.restricted-guests"; declare module "@element-hq/element-web-module-api" { export interface Config { [CONFIG_KEY]: input; } }