Notfallzugang gilt auch im Worker

Der Voll-Abgleich hat den Administrator alle fünf Minuten hinausgeworfen:
enforceMembership kannte BOOTSTRAP_ADMIN_IDS nicht und sah nur, dass keine
seiner Rollen zur Anmeldung berechtigt. Solange das Rollen-Mapping noch leer
ist, trifft das zwangsläufig zu - der Notfallzugang war damit genau in der
Lage wirkungslos, für die es ihn gibt.

Gefunden beim ersten Lauf gegen den echten Discord-Server, nicht im Test.
This commit is contained in:
Harlekin
2026-09-01 19:24:13 +02:00
parent c6aefb310c
commit e14868b5ea
4 changed files with 39 additions and 4 deletions
+12
View File
@@ -7,6 +7,14 @@ export type WorkerEnv = {
databaseUrl: string
discordBotToken: string
discordGuildId: string
/**
* Notfallzugang. Diese Nutzer behalten ihre Sitzung, auch wenn keine ihrer
* Rollen zur Anmeldung berechtigt. Ohne das wirft der Voll-Abgleich den
* Administrator alle fünf Minuten hinaus — also genau dann, wenn er das
* Rollen-Mapping erst noch einrichten will.
* Siehe docs/03-auth-und-rechte.md.
*/
bootstrapAdminIds: string[]
/** Voll-Abgleich als Sicherheitsnetz, siehe docs/02-architektur.md. */
fullSyncIntervalMs: number
heartbeatIntervalMs: number
@@ -24,6 +32,10 @@ export function loadEnv(): WorkerEnv {
databaseUrl: required('DATABASE_URL'),
discordBotToken: required('DISCORD_BOT_TOKEN'),
discordGuildId: required('DISCORD_GUILD_ID'),
bootstrapAdminIds: (process.env.BOOTSTRAP_ADMIN_IDS ?? '')
.split(',')
.map((id) => id.trim())
.filter(Boolean),
fullSyncIntervalMs: Number(process.env.WORKER_FULL_SYNC_MS ?? 5 * 60_000),
heartbeatIntervalMs: Number(process.env.WORKER_HEARTBEAT_MS ?? 30_000),
adminChannelId: process.env.DISCORD_ADMIN_CHANNEL_ID,