Eerste commit

This commit is contained in:
jf
2026-09-27 14:21:31 +00:00
commit de4ff128cb
295 changed files with 47374 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
-- MijnBesluit - onthouden welke inlogcode ECHT is gebruikt
--
-- Er zit een rem op het aanvragen van codes: niet meer dan vijf per uur voor hetzelfde adres.
-- Die rem is er tegen één ding: iemand die het postvak van een ander volgooit door steeds
-- opnieuw een code voor dat adres aan te vragen.
--
-- Die telling keek naar alle codes van het afgelopen uur, ook de codes die gewoon zijn gebruikt
-- om in te loggen. Wie vijf keer in een uur inlogde, sloot zichzelf dus een uur buiten - en dat
-- gebeurt precies wanneer er íéts anders aan de hand is en je het een paar keer opnieuw
-- probeert. Dat is de verkeerde kant om te falen: de rem hoort een vreemde te stoppen, niet de
-- eigenaar.
--
-- Waarom daar een nieuwe kolom voor nodig is: `consumed_at` betekent "deze code werkt niet
-- meer", en dat wordt ook gezet als een nieuwe aanvraag de vorige ongeldig maakt, en als een
-- code te vaak fout is ingevuld. Precies die twee gevallen MOETEN meetellen - anders kan een
-- vreemde de rem leegtrekken door codes aan te vragen of expres fout in te vullen.
--
-- `signed_in_at` staat alleen gevuld als de code goed is ingevuld en er iemand mee is
-- binnengekomen. Alleen dát is het bewijs dat de aanvrager zelf in dat postvak zit, en alleen
-- die codes tellen niet mee voor de rem.
--
-- Draaien met:
-- mysql -u root -p mijnbesluit < db\14_inlogcode_gebruikt.sql
--
-- Opnieuw draaien mag: er gebeurt dan niets.
USE `mijnbesluit`;
SET @bestaat := (
SELECT COUNT(*) FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'login_codes' AND COLUMN_NAME = 'signed_in_at');
SET @sql := IF(@bestaat = 0,
'ALTER TABLE `login_codes` ADD COLUMN `signed_in_at` DATETIME(3) NULL',
'SELECT "signed_in_at bestaat al" AS melding');
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
SELECT 'Klaar.' AS melding;