Eerste commit
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
-- MijnBesluit - kijklink voor een moment aan iemand zonder account
|
||||
--
|
||||
-- Zet je een moment klaar voor iemand die (nog) geen MijnBesluit-account heeft, dan krijgt hij
|
||||
-- voortaan een e-mail met een link naar een landingspagina: daar is het bericht - tekst en een
|
||||
-- eventuele foto, video of document - te zien zonder in te loggen. Zelfde opzet als de
|
||||
-- uitnodigings- en bezwaarlink: alleen de hash van het token staat in de database, het token
|
||||
-- zelf staat uitsluitend in de e-mail.
|
||||
--
|
||||
-- view_token_hash : SHA-256 van het token uit de link
|
||||
-- view_token_expires : tot wanneer die link werkt (30 dagen na het versturen)
|
||||
-- view_token_sent_at : wanneer de linkmail voor het eerst is verstuurd
|
||||
-- viewed_at : wanneer de landingspagina daadwerkelijk is geopend
|
||||
-- view_reminder_sent_at : wanneer de herinnering is verstuurd (nooit meer dan één keer)
|
||||
-- wrapped_content_key_for_token: de contentsleutel, ingepakt met een sleutel uit het token zelf
|
||||
-- wrapped_vault_key_for_token : dezelfde inpakslag, voor de bijlage bij dit bericht
|
||||
--
|
||||
-- Draaien met:
|
||||
-- mysql -u root -p mijnbesluit < db\18_kijklink.sql
|
||||
--
|
||||
-- Opnieuw draaien mag: er gebeurt dan niets.
|
||||
|
||||
USE `mijnbesluit`;
|
||||
|
||||
-- ---------------------------------------------------------------- view_token_hash
|
||||
SET @bestaat := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'messages' AND COLUMN_NAME = 'view_token_hash');
|
||||
|
||||
SET @sql := IF(@bestaat = 0,
|
||||
'ALTER TABLE `messages` ADD COLUMN `view_token_hash` VARBINARY(32) NULL',
|
||||
'SELECT "view_token_hash bestaat al" AS melding');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ---------------------------------------------------------------- view_token_expires
|
||||
SET @bestaat := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'messages' AND COLUMN_NAME = 'view_token_expires');
|
||||
|
||||
SET @sql := IF(@bestaat = 0,
|
||||
'ALTER TABLE `messages` ADD COLUMN `view_token_expires` DATETIME(3) NULL',
|
||||
'SELECT "view_token_expires bestaat al" AS melding');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ---------------------------------------------------------------- view_token_sent_at
|
||||
SET @bestaat := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'messages' AND COLUMN_NAME = 'view_token_sent_at');
|
||||
|
||||
SET @sql := IF(@bestaat = 0,
|
||||
'ALTER TABLE `messages` ADD COLUMN `view_token_sent_at` DATETIME(3) NULL',
|
||||
'SELECT "view_token_sent_at bestaat al" AS melding');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ---------------------------------------------------------------- viewed_at
|
||||
SET @bestaat := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'messages' AND COLUMN_NAME = 'viewed_at');
|
||||
|
||||
SET @sql := IF(@bestaat = 0,
|
||||
'ALTER TABLE `messages` ADD COLUMN `viewed_at` DATETIME(3) NULL',
|
||||
'SELECT "viewed_at bestaat al" AS melding');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ---------------------------------------------------------------- view_reminder_sent_at
|
||||
SET @bestaat := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'messages' AND COLUMN_NAME = 'view_reminder_sent_at');
|
||||
|
||||
SET @sql := IF(@bestaat = 0,
|
||||
'ALTER TABLE `messages` ADD COLUMN `view_reminder_sent_at` DATETIME(3) NULL',
|
||||
'SELECT "view_reminder_sent_at bestaat al" AS melding');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ---------------------------------------------------------------- wrapped_content_key_for_token
|
||||
SET @bestaat := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'messages' AND COLUMN_NAME = 'wrapped_content_key_for_token');
|
||||
|
||||
SET @sql := IF(@bestaat = 0,
|
||||
'ALTER TABLE `messages` ADD COLUMN `wrapped_content_key_for_token` VARBINARY(96) NULL',
|
||||
'SELECT "wrapped_content_key_for_token bestaat al" AS melding');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ---------------------------------------------------------------- wrapped_vault_key_for_token
|
||||
SET @bestaat := (
|
||||
SELECT COUNT(*) FROM information_schema.COLUMNS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'messages' AND COLUMN_NAME = 'wrapped_vault_key_for_token');
|
||||
|
||||
SET @sql := IF(@bestaat = 0,
|
||||
'ALTER TABLE `messages` ADD COLUMN `wrapped_vault_key_for_token` VARBINARY(96) NULL',
|
||||
'SELECT "wrapped_vault_key_for_token bestaat al" AS melding');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
-- ---------------------------------------------------------------- index
|
||||
-- De landingspagina zoekt het bericht op dit kenmerk op, dus zonder index is dat een tabelscan.
|
||||
SET @bestaat := (
|
||||
SELECT COUNT(*) FROM information_schema.STATISTICS
|
||||
WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'messages' AND INDEX_NAME = 'ix_messages_view_token');
|
||||
|
||||
SET @sql := IF(@bestaat = 0,
|
||||
'CREATE INDEX `ix_messages_view_token` ON `messages` (`view_token_hash`)',
|
||||
'SELECT "ix_messages_view_token bestaat al" AS melding');
|
||||
PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
|
||||
|
||||
SELECT 'Klaar. Momenten voor iemand zonder account krijgen vanaf nu een kijklink per e-mail.' AS melding;
|
||||
Reference in New Issue
Block a user