34 lines
1.5 KiB
MySQL
34 lines
1.5 KiB
MySQL
|
|
-- =====================================================================
|
||
|
|
-- TeeCup — mobil (m/landsnummer) + verifisert e-postbytte på personlig
|
||
|
|
-- profil (migrasjon 016)
|
||
|
|
-- =====================================================================
|
||
|
|
-- Oppfølging av ADR-031 samme dag: brukeren påpekte at identifikatoren
|
||
|
|
-- (e-post) og mobil manglet i profilen. Mobil er et rent, ekstra felt
|
||
|
|
-- (samme mønster som player.mobile, men splittet i landsnummer+nummer
|
||
|
|
-- slik brukeren ba om). E-post er derimot INNLOGGINGS-identifikatoren
|
||
|
|
-- (magic-link-mål) -- kan ikke endres med en enkel PATCH uten å risikere
|
||
|
|
-- kontokapring via en skrivefeil eller en kapret sesjon. Samme
|
||
|
|
-- token-hash-og-utløp-mønster som magic_link_token (004), gjenbrukt for
|
||
|
|
-- et NYTT formål: bekreft eierskap av den NYE adressen FØR den faktisk
|
||
|
|
-- tas i bruk.
|
||
|
|
-- =====================================================================
|
||
|
|
|
||
|
|
\set ON_ERROR_STOP on
|
||
|
|
|
||
|
|
ALTER TABLE app_user ADD COLUMN mobile_country_code text;
|
||
|
|
ALTER TABLE app_user ADD COLUMN mobile_number text;
|
||
|
|
|
||
|
|
CREATE TABLE email_change_token (
|
||
|
|
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
|
||
|
|
user_id uuid NOT NULL REFERENCES app_user(id) ON DELETE CASCADE,
|
||
|
|
new_email citext NOT NULL,
|
||
|
|
token_hash text NOT NULL UNIQUE,
|
||
|
|
expires_at timestamptz NOT NULL,
|
||
|
|
consumed_at timestamptz,
|
||
|
|
created_at timestamptz NOT NULL DEFAULT now()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX ON email_change_token (user_id);
|
||
|
|
|
||
|
|
GRANT SELECT, INSERT, UPDATE, DELETE ON email_change_token TO teecup_app;
|