-- MijnBesluit - bezwaar maken zonder in te loggen -- -- Als er gemeld wordt dat je bent overleden, krijg je daar bericht van met de vraag of dat -- klopt. Tot nu toe moest je inloggen om te zeggen dat je er nog bent. Dat gaat mis op precies -- het moment dat het ertoe doet: zodra het overlijden bevestigd is, staat je account op -- "overleden" en kun je niet meer inloggen. Dan is er geen weg terug. -- -- Daarom gaat er voortaan een link mee in die e-mail, die werkt zonder inloggen - net als een -- uitnodiging. Alleen de versleutelde vorm van dat kenmerk staat hier; de link zelf staat -- uitsluitend in de e-mail. -- -- objection_token_hash : SHA-256 van het kenmerk uit de link -- objection_token_expires : tot wanneer die link werkt -- -- Draaien met: -- mysql -u root -p mijnbesluit < db\10_bezwaarlink.sql -- -- Opnieuw draaien mag: er gebeurt dan niets. USE `mijnbesluit`; -- ---------------------------------------------------------------- objection_token_hash SET @bestaat := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'persons' AND COLUMN_NAME = 'objection_token_hash'); SET @sql := IF(@bestaat = 0, 'ALTER TABLE `persons` ADD COLUMN `objection_token_hash` VARBINARY(32) NULL', 'SELECT "objection_token_hash bestaat al" AS melding'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- ---------------------------------------------------------------- objection_token_expires SET @bestaat := ( SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'persons' AND COLUMN_NAME = 'objection_token_expires'); SET @sql := IF(@bestaat = 0, 'ALTER TABLE `persons` ADD COLUMN `objection_token_expires` DATETIME(3) NULL', 'SELECT "objection_token_expires bestaat al" AS melding'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- ---------------------------------------------------------------- index -- De link wordt opgezocht op dit kenmerk, dus zonder index is dat een tabelscan. SET @bestaat := ( SELECT COUNT(*) FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'persons' AND INDEX_NAME = 'ix_persons_objection'); SET @sql := IF(@bestaat = 0, 'CREATE INDEX `ix_persons_objection` ON `persons` (`objection_token_hash`)', 'SELECT "ix_persons_objection bestaat al" AS melding'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; SELECT 'Klaar. De waarschuwingsmail krijgt vanaf nu een bezwaarlink.' AS melding;