Make admin seed idempotent-upsert so a corrupted password can be fixed by restart
Grund: $ in SEED_ADMIN_PASSWORD wird von Docker-Compose/Portainer als Variablen-Referenz interpretiert und kann dadurch verstümmelt beim Container ankommen. Seed synct das Passwort jetzt bei jedem Start neu, solange die Variable gesetzt ist, statt nur einmalig anzulegen. README um Warnhinweis ergänzt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
11a3753d76
commit
ca5d240cf6
+10
-7
@@ -31,18 +31,21 @@ app.get(/^(?!\/api\/).*/, (_req, res) => {
|
||||
res.sendFile(path.join(PUBLIC_DIR, 'index.html'));
|
||||
});
|
||||
|
||||
// Legt beim ersten Start ein lokales Fallback-Konto an, falls SEED_ADMIN_USERNAME/
|
||||
// SEED_ADMIN_PASSWORD gesetzt sind und noch kein Konto mit diesem Namen existiert.
|
||||
// Idempotent – kann bei jedem Neustart stehen bleiben, legt nichts doppelt an.
|
||||
// Legt beim Start ein lokales Fallback-Konto an bzw. hält es synchron, solange
|
||||
// SEED_ADMIN_USERNAME/SEED_ADMIN_PASSWORD gesetzt sind (Upsert – so lässt sich ein
|
||||
// falsch übernommenes Passwort einfach per Neustart korrigieren). Danach die
|
||||
// SEED_ADMIN_PASSWORD-Variable aus dem Stack entfernen, um das Konto "einzufrieren".
|
||||
async function seedAdminIfConfigured() {
|
||||
const username = process.env.SEED_ADMIN_USERNAME;
|
||||
const password = process.env.SEED_ADMIN_PASSWORD;
|
||||
if (!username || !password) return;
|
||||
const existing = await prisma.user.findUnique({ where: { username } });
|
||||
if (existing) return;
|
||||
const passwordHash = await bcrypt.hash(password, 12);
|
||||
await prisma.user.create({ data: { username, passwordHash, name: username } });
|
||||
console.log(`Lokales Konto "${username}" angelegt.`);
|
||||
await prisma.user.upsert({
|
||||
where: { username },
|
||||
update: { passwordHash },
|
||||
create: { username, passwordHash, name: username }
|
||||
});
|
||||
console.log(`Lokales Konto "${username}" angelegt/aktualisiert.`);
|
||||
}
|
||||
|
||||
seedAdminIfConfigured()
|
||||
|
||||
Reference in New Issue
Block a user