110_pending_auth_and_provider_default_grants.sql 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. CREATE TABLE IF NOT EXISTS user_provider_default_grants (
  2. id BIGSERIAL PRIMARY KEY,
  3. user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  4. provider_type VARCHAR(20) NOT NULL,
  5. grant_reason VARCHAR(20) NOT NULL DEFAULT 'first_bind',
  6. granted_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  7. created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  8. CONSTRAINT user_provider_default_grants_provider_type_check
  9. CHECK (provider_type IN ('email', 'linuxdo', 'wechat', 'oidc')),
  10. CONSTRAINT user_provider_default_grants_reason_check
  11. CHECK (grant_reason IN ('signup', 'first_bind'))
  12. );
  13. CREATE UNIQUE INDEX IF NOT EXISTS user_provider_default_grants_user_provider_reason_key
  14. ON user_provider_default_grants (user_id, provider_type, grant_reason);
  15. CREATE INDEX IF NOT EXISTS user_provider_default_grants_user_id_idx
  16. ON user_provider_default_grants (user_id);
  17. CREATE TABLE IF NOT EXISTS user_avatars (
  18. id BIGSERIAL PRIMARY KEY,
  19. user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  20. storage_provider VARCHAR(20) NOT NULL DEFAULT 'database',
  21. storage_key TEXT NOT NULL DEFAULT '',
  22. url TEXT NOT NULL DEFAULT '',
  23. content_type VARCHAR(100) NOT NULL DEFAULT '',
  24. byte_size INT NOT NULL DEFAULT 0,
  25. sha256 VARCHAR(64) NOT NULL DEFAULT '',
  26. created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  27. updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
  28. );
  29. CREATE UNIQUE INDEX IF NOT EXISTS user_avatars_user_id_key
  30. ON user_avatars (user_id);
  31. INSERT INTO settings (key, value)
  32. VALUES
  33. ('auth_source_default_email_balance', '0'),
  34. ('auth_source_default_email_concurrency', '5'),
  35. ('auth_source_default_email_subscriptions', '[]'),
  36. ('auth_source_default_email_grant_on_signup', 'false'),
  37. ('auth_source_default_email_grant_on_first_bind', 'false'),
  38. ('auth_source_default_linuxdo_balance', '0'),
  39. ('auth_source_default_linuxdo_concurrency', '5'),
  40. ('auth_source_default_linuxdo_subscriptions', '[]'),
  41. ('auth_source_default_linuxdo_grant_on_signup', 'false'),
  42. ('auth_source_default_linuxdo_grant_on_first_bind', 'false'),
  43. ('auth_source_default_oidc_balance', '0'),
  44. ('auth_source_default_oidc_concurrency', '5'),
  45. ('auth_source_default_oidc_subscriptions', '[]'),
  46. ('auth_source_default_oidc_grant_on_signup', 'false'),
  47. ('auth_source_default_oidc_grant_on_first_bind', 'false'),
  48. ('auth_source_default_wechat_balance', '0'),
  49. ('auth_source_default_wechat_concurrency', '5'),
  50. ('auth_source_default_wechat_subscriptions', '[]'),
  51. ('auth_source_default_wechat_grant_on_signup', 'false'),
  52. ('auth_source_default_wechat_grant_on_first_bind', 'false'),
  53. ('force_email_on_third_party_signup', 'false')
  54. ON CONFLICT (key) DO NOTHING;