Newer
Older
backup-commander / install / db / p-2.sql
  1. -- Upgraded the users part of the database
  2.  
  3. DROP TABLE "LOGINS";
  4.  
  5. -- PHP-Auth (https://github.com/delight-im/PHP-Auth)
  6. -- Copyright (c) delight.im (https://www.delight.im/)
  7. -- Licensed under the MIT License (https://opensource.org/licenses/MIT)
  8.  
  9. PRAGMA foreign_keys = OFF;
  10.  
  11. CREATE TABLE "users" (
  12. "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0),
  13. "email" VARCHAR(249) NOT NULL,
  14. "password" VARCHAR(255) NOT NULL,
  15. "username" VARCHAR(100) DEFAULT NULL,
  16. "status" INTEGER NOT NULL CHECK ("status" >= 0) DEFAULT "0",
  17. "verified" INTEGER NOT NULL CHECK ("verified" >= 0) DEFAULT "0",
  18. "resettable" INTEGER NOT NULL CHECK ("resettable" >= 0) DEFAULT "1",
  19. "roles_mask" INTEGER NOT NULL CHECK ("roles_mask" >= 0) DEFAULT "0",
  20. "registered" INTEGER NOT NULL CHECK ("registered" >= 0),
  21. "last_login" INTEGER CHECK ("last_login" >= 0) DEFAULT NULL,
  22. "force_logout" INTEGER NOT NULL CHECK ("force_logout" >= 0) DEFAULT "0",
  23. CONSTRAINT "email" UNIQUE ("email")
  24. );
  25.  
  26. CREATE TABLE "users_2fa" (
  27. "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0),
  28. "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
  29. "mechanism" INTEGER NOT NULL CHECK ("mechanism" >= 0),
  30. "seed" VARCHAR(255) DEFAULT NULL,
  31. "created_at" INTEGER NOT NULL CHECK ("created_at" >= 0),
  32. "expires_at" INTEGER CHECK ("expires_at" >= 0) DEFAULT NULL,
  33. CONSTRAINT "user_id_mechanism" UNIQUE ("user_id", "mechanism")
  34. );
  35.  
  36. CREATE TABLE "users_confirmations" (
  37. "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0),
  38. "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
  39. "email" VARCHAR(249) NOT NULL,
  40. "selector" VARCHAR(16) NOT NULL,
  41. "token" VARCHAR(255) NOT NULL,
  42. "expires" INTEGER NOT NULL CHECK ("expires" >= 0),
  43. CONSTRAINT "selector" UNIQUE ("selector")
  44. );
  45. CREATE INDEX "users_confirmations.email_expires" ON "users_confirmations" ("email", "expires");
  46. CREATE INDEX "users_confirmations.user_id" ON "users_confirmations" ("user_id");
  47.  
  48. CREATE TABLE "users_otps" (
  49. "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0),
  50. "user_id" INTEGER NOT NULL CHECK ("user_id" >= 0),
  51. "mechanism" INTEGER NOT NULL CHECK ("mechanism" >= 0),
  52. "single_factor" INTEGER NOT NULL CHECK ("single_factor" >= 0) DEFAULT "0",
  53. "selector" VARCHAR(24) NOT NULL,
  54. "token" VARCHAR(255) NOT NULL,
  55. "expires_at" INTEGER CHECK ("expires_at" >= 0) DEFAULT NULL
  56. );
  57. CREATE INDEX "users_otps.user_id_mechanism" ON "users_otps" ("user_id", "mechanism");
  58. CREATE INDEX "users_otps.selector_user_id" ON "users_otps" ("selector", "user_id");
  59.  
  60. CREATE TABLE "users_remembered" (
  61. "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0),
  62. "user" INTEGER NOT NULL CHECK ("user" >= 0),
  63. "selector" VARCHAR(24) NOT NULL,
  64. "token" VARCHAR(255) NOT NULL,
  65. "expires" INTEGER NOT NULL CHECK ("expires" >= 0),
  66. CONSTRAINT "selector" UNIQUE ("selector")
  67. );
  68. CREATE INDEX "users_remembered.user" ON "users_remembered" ("user");
  69.  
  70. CREATE TABLE "users_resets" (
  71. "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK ("id" >= 0),
  72. "user" INTEGER NOT NULL CHECK ("user" >= 0),
  73. "selector" VARCHAR(20) NOT NULL,
  74. "token" VARCHAR(255) NOT NULL,
  75. "expires" INTEGER NOT NULL CHECK ("expires" >= 0),
  76. CONSTRAINT "selector" UNIQUE ("selector")
  77. );
  78. CREATE INDEX "users_resets.user_expires" ON "users_resets" ("user", "expires");
  79.  
  80. CREATE TABLE "users_throttling" (
  81. "bucket" VARCHAR(44) PRIMARY KEY NOT NULL,
  82. "tokens" REAL NOT NULL CHECK ("tokens" >= 0),
  83. "replenished_at" INTEGER NOT NULL CHECK ("replenished_at" >= 0),
  84. "expires_at" INTEGER NOT NULL CHECK ("expires_at" >= 0)
  85. );
  86. CREATE INDEX "users_throttling.expires_at" ON "users_throttling" ("expires_at");