Harden authentication, tenant isolation and security boundaries

This commit is contained in:
t.indorf
2026-10-09 22:49:55 +02:00
parent ec3f4f933d
commit 656ada80bd
71 changed files with 3107 additions and 1200 deletions
+7 -15
View File
@@ -19,7 +19,7 @@ import { hash } from "bcryptjs";
// noch keine Kita und keine User enthaelt.
//
// Reset: `npm run db:seed:reset` loescht gezielt die Demo-Daten und baut
// sie neu auf. Production wird nur mit ALLOW_DATABASE_SEED=true erlaubt.
// sie neu auf. Production-Seeding ist grundsätzlich deaktiviert.
// =====================================================================
const prisma = new PrismaClient();
@@ -101,16 +101,8 @@ function getWorkingDays(year: number, month: number, limit?: number) {
}
function isSeedAllowed() {
if (
process.env.NODE_ENV === "development" ||
process.env.ALLOW_DATABASE_SEED === "true"
) {
return true;
}
console.log(
"Seed uebersprungen: NODE_ENV ist nicht development. Setze ALLOW_DATABASE_SEED=true, wenn das bewusst gewuenscht ist.",
);
if (process.env.NODE_ENV !== "production" && process.env.ALLOW_DATABASE_SEED === "true") return true;
console.log("Seed deaktiviert. Nur außerhalb der Produktion mit ALLOW_DATABASE_SEED=true erlaubt.");
return false;
}
@@ -688,10 +680,10 @@ async function createAnnouncements(context: SeedContext) {
await prisma.announcementRead.createMany({
data: [
{ userId: koordinator.id, announcementId: sommerfest.id },
{ userId: elternSchmidt.id, announcementId: sommerfest.id },
{ userId: elternYilmaz.id, announcementId: sommerfest.id },
{ userId: elternFischer.id, announcementId: garderobe.id },
{ kitaId: kita.id, userId: koordinator.id, announcementId: sommerfest.id },
{ kitaId: kita.id, userId: elternSchmidt.id, announcementId: sommerfest.id },
{ kitaId: kita.id, userId: elternYilmaz.id, announcementId: sommerfest.id },
{ kitaId: kita.id, userId: elternFischer.id, announcementId: garderobe.id },
],
});
}