54 lines
2.5 KiB
SQL
54 lines
2.5 KiB
SQL
-- 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;
|