-- 009_steam_login.sql — Steam OpenID sign-in support. -- -- Adds a nullable `steam_id` column to `users` so an admin or operator -- can log in with their Steam account instead of (or in addition to) -- email + password. -- -- steam_id stores the 17-digit SteamID64 as TEXT (not BIGINT) because -- while the value fits in uint64, using TEXT avoids any sign-extension -- surprises across the app / frontend / logs. Unique constraint so one -- Steam account can only be linked to one panel user. -- -- password_hash is made nullable: a user may exist who only signs in via -- Steam with no local password. The email column stays NOT NULL — even -- Steam-only users need a panel identity, we auto-fill with the -- Steam-derived email "steam+@panel.local" when there's nothing -- better. ALTER TABLE users ADD COLUMN steam_id TEXT; ALTER TABLE users ADD CONSTRAINT users_steam_id_unique UNIQUE (steam_id); ALTER TABLE users ALTER COLUMN password_hash DROP NOT NULL; CREATE INDEX idx_users_steam_id ON users(steam_id) WHERE steam_id IS NOT NULL;