teecup/016_profile_contact.sql

34 lines
1.5 KiB
MySQL
Raw Normal View History

-- =====================================================================
-- 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;