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
@@ -0,0 +1,20 @@
BEGIN;
-- AlterTable
ALTER TABLE "announcement_reads" ADD COLUMN "kitaId" TEXT;
UPDATE announcement_reads AS r SET "kitaId" = a."kitaId" FROM announcements AS a WHERE a.id = r."announcementId";
ALTER TABLE announcement_reads ALTER COLUMN "kitaId" SET NOT NULL;
-- CreateIndex
CREATE UNIQUE INDEX "announcements_id_kitaId_key" ON "announcements"("id", "kitaId");
-- CreateIndex
CREATE INDEX "announcement_reads_kitaId_idx" ON "announcement_reads"("kitaId");
ALTER TABLE users ADD CONSTRAINT users_family_requires_tenant CHECK ("familyId" IS NULL OR "kitaId" IS NOT NULL);
ALTER TABLE announcement_reads ADD CONSTRAINT announcement_reads_user_tenant_fkey
FOREIGN KEY ("userId", "kitaId") REFERENCES users(id, "kitaId") ON DELETE NO ACTION ON UPDATE NO ACTION;
ALTER TABLE announcement_reads ADD CONSTRAINT announcement_reads_announcement_tenant_fkey
FOREIGN KEY ("announcementId", "kitaId") REFERENCES announcements(id, "kitaId") ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;