@techelusive/nest-auth 0.0.0-stage → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/LICENSE +21 -0
  3. package/README.md +204 -2
  4. package/api/openapi.json +4399 -0
  5. package/api/techelusive-authentication.postman_collection.json +3178 -0
  6. package/dist/auth-options.d.ts +156 -0
  7. package/dist/auth-options.js +3 -0
  8. package/dist/auth-options.js.map +1 -0
  9. package/dist/auth-options.validation.d.ts +9 -0
  10. package/dist/auth-options.validation.js +74 -0
  11. package/dist/auth-options.validation.js.map +1 -0
  12. package/dist/auth.module.d.ts +38 -0
  13. package/dist/auth.module.js +173 -0
  14. package/dist/auth.module.js.map +1 -0
  15. package/dist/common/auth-error.d.ts +16 -0
  16. package/dist/common/auth-error.js +23 -0
  17. package/dist/common/auth-error.js.map +1 -0
  18. package/dist/common/auth-exception.filter.d.ts +24 -0
  19. package/dist/common/auth-exception.filter.js +66 -0
  20. package/dist/common/auth-exception.filter.js.map +1 -0
  21. package/dist/common/crypto/jwt.d.ts +89 -0
  22. package/dist/common/crypto/jwt.js +144 -0
  23. package/dist/common/crypto/jwt.js.map +1 -0
  24. package/dist/common/crypto/random-secrets.d.ts +78 -0
  25. package/dist/common/crypto/random-secrets.js +113 -0
  26. package/dist/common/crypto/random-secrets.js.map +1 -0
  27. package/dist/common/crypto/remote-public-keys.d.ts +49 -0
  28. package/dist/common/crypto/remote-public-keys.js +105 -0
  29. package/dist/common/crypto/remote-public-keys.js.map +1 -0
  30. package/dist/common/crypto/totp.d.ts +68 -0
  31. package/dist/common/crypto/totp.js +148 -0
  32. package/dist/common/crypto/totp.js.map +1 -0
  33. package/dist/common/encryption.service.d.ts +36 -0
  34. package/dist/common/encryption.service.js +111 -0
  35. package/dist/common/encryption.service.js.map +1 -0
  36. package/dist/common/identifiers.d.ts +48 -0
  37. package/dist/common/identifiers.js +89 -0
  38. package/dist/common/identifiers.js.map +1 -0
  39. package/dist/common/network-safety.d.ts +19 -0
  40. package/dist/common/network-safety.js +72 -0
  41. package/dist/common/network-safety.js.map +1 -0
  42. package/dist/common/rate-limiter.service.d.ts +63 -0
  43. package/dist/common/rate-limiter.service.js +158 -0
  44. package/dist/common/rate-limiter.service.js.map +1 -0
  45. package/dist/common/refresh-token-cookie.d.ts +78 -0
  46. package/dist/common/refresh-token-cookie.js +185 -0
  47. package/dist/common/refresh-token-cookie.js.map +1 -0
  48. package/dist/common/request-context.d.ts +14 -0
  49. package/dist/common/request-context.js +22 -0
  50. package/dist/common/request-context.js.map +1 -0
  51. package/dist/common/strict-validation.pipe.d.ts +8 -0
  52. package/dist/common/strict-validation.pipe.js +16 -0
  53. package/dist/common/strict-validation.pipe.js.map +1 -0
  54. package/dist/common/time.d.ts +15 -0
  55. package/dist/common/time.js +34 -0
  56. package/dist/common/time.js.map +1 -0
  57. package/dist/constants.d.ts +1326 -0
  58. package/dist/constants.js +1142 -0
  59. package/dist/constants.js.map +1 -0
  60. package/dist/database/create-auth-tables.migration.d.ts +26 -0
  61. package/dist/database/create-auth-tables.migration.js +291 -0
  62. package/dist/database/create-auth-tables.migration.js.map +1 -0
  63. package/dist/database/email-change-and-retention.migration.d.ts +25 -0
  64. package/dist/database/email-change-and-retention.migration.js +54 -0
  65. package/dist/database/email-change-and-retention.migration.js.map +1 -0
  66. package/dist/database/entities/api-key.entity.d.ts +17 -0
  67. package/dist/database/entities/api-key.entity.js +80 -0
  68. package/dist/database/entities/api-key.entity.js.map +1 -0
  69. package/dist/database/entities/audit-log.entity.d.ts +13 -0
  70. package/dist/database/entities/audit-log.entity.js +64 -0
  71. package/dist/database/entities/audit-log.entity.js.map +1 -0
  72. package/dist/database/entities/backup-code.entity.d.ts +9 -0
  73. package/dist/database/entities/backup-code.entity.js +52 -0
  74. package/dist/database/entities/backup-code.entity.js.map +1 -0
  75. package/dist/database/entities/index.d.ts +43 -0
  76. package/dist/database/entities/index.js +82 -0
  77. package/dist/database/entities/index.js.map +1 -0
  78. package/dist/database/entities/json-object.d.ts +12 -0
  79. package/dist/database/entities/json-object.js +3 -0
  80. package/dist/database/entities/json-object.js.map +1 -0
  81. package/dist/database/entities/link-token.entity.d.ts +15 -0
  82. package/dist/database/entities/link-token.entity.js +64 -0
  83. package/dist/database/entities/link-token.entity.js.map +1 -0
  84. package/dist/database/entities/one-time-code.entity.d.ts +16 -0
  85. package/dist/database/entities/one-time-code.entity.js +69 -0
  86. package/dist/database/entities/one-time-code.entity.js.map +1 -0
  87. package/dist/database/entities/organization-invitation.entity.d.ts +14 -0
  88. package/dist/database/entities/organization-invitation.entity.js +73 -0
  89. package/dist/database/entities/organization-invitation.entity.js.map +1 -0
  90. package/dist/database/entities/organization-member.entity.d.ts +9 -0
  91. package/dist/database/entities/organization-member.entity.js +48 -0
  92. package/dist/database/entities/organization-member.entity.js.map +1 -0
  93. package/dist/database/entities/organization.entity.d.ts +12 -0
  94. package/dist/database/entities/organization.entity.js +58 -0
  95. package/dist/database/entities/organization.entity.js.map +1 -0
  96. package/dist/database/entities/passkey.entity.d.ts +19 -0
  97. package/dist/database/entities/passkey.entity.js +78 -0
  98. package/dist/database/entities/passkey.entity.js.map +1 -0
  99. package/dist/database/entities/password.entity.d.ts +6 -0
  100. package/dist/database/entities/password.entity.js +36 -0
  101. package/dist/database/entities/password.entity.js.map +1 -0
  102. package/dist/database/entities/refresh-token.entity.d.ts +9 -0
  103. package/dist/database/entities/refresh-token.entity.js +53 -0
  104. package/dist/database/entities/refresh-token.entity.js.map +1 -0
  105. package/dist/database/entities/session.entity.d.ts +20 -0
  106. package/dist/database/entities/session.entity.js +87 -0
  107. package/dist/database/entities/session.entity.js.map +1 -0
  108. package/dist/database/entities/settings.entity.d.ts +7 -0
  109. package/dist/database/entities/settings.entity.js +41 -0
  110. package/dist/database/entities/settings.entity.js.map +1 -0
  111. package/dist/database/entities/sign-in-challenge.entity.d.ts +23 -0
  112. package/dist/database/entities/sign-in-challenge.entity.js +80 -0
  113. package/dist/database/entities/sign-in-challenge.entity.js.map +1 -0
  114. package/dist/database/entities/signing-key.entity.d.ts +11 -0
  115. package/dist/database/entities/signing-key.entity.js +54 -0
  116. package/dist/database/entities/signing-key.entity.js.map +1 -0
  117. package/dist/database/entities/social-account.entity.d.ts +13 -0
  118. package/dist/database/entities/social-account.entity.js +54 -0
  119. package/dist/database/entities/social-account.entity.js.map +1 -0
  120. package/dist/database/entities/two-factor-secret.entity.d.ts +10 -0
  121. package/dist/database/entities/two-factor-secret.entity.js +48 -0
  122. package/dist/database/entities/two-factor-secret.entity.js.map +1 -0
  123. package/dist/database/entities/user.entity.d.ts +34 -0
  124. package/dist/database/entities/user.entity.js +129 -0
  125. package/dist/database/entities/user.entity.js.map +1 -0
  126. package/dist/database/entities/webhook-delivery.entity.d.ts +17 -0
  127. package/dist/database/entities/webhook-delivery.entity.js +79 -0
  128. package/dist/database/entities/webhook-delivery.entity.js.map +1 -0
  129. package/dist/database/entities/webhook.entity.d.ts +12 -0
  130. package/dist/database/entities/webhook.entity.js +58 -0
  131. package/dist/database/entities/webhook.entity.js.map +1 -0
  132. package/dist/database/typeorm-row.d.ts +21 -0
  133. package/dist/database/typeorm-row.js +29 -0
  134. package/dist/database/typeorm-row.js.map +1 -0
  135. package/dist/features/account/account.controller.d.ts +259 -0
  136. package/dist/features/account/account.controller.js +372 -0
  137. package/dist/features/account/account.controller.js.map +1 -0
  138. package/dist/features/account/account.dto.d.ts +16 -0
  139. package/dist/features/account/account.dto.js +61 -0
  140. package/dist/features/account/account.dto.js.map +1 -0
  141. package/dist/features/account/data-export.service.d.ts +85 -0
  142. package/dist/features/account/data-export.service.js +125 -0
  143. package/dist/features/account/data-export.service.js.map +1 -0
  144. package/dist/features/account/health.service.d.ts +30 -0
  145. package/dist/features/account/health.service.js +59 -0
  146. package/dist/features/account/health.service.js.map +1 -0
  147. package/dist/features/admin/admin.controller.d.ts +382 -0
  148. package/dist/features/admin/admin.controller.js +623 -0
  149. package/dist/features/admin/admin.controller.js.map +1 -0
  150. package/dist/features/admin/admin.dto.d.ts +61 -0
  151. package/dist/features/admin/admin.dto.js +253 -0
  152. package/dist/features/admin/admin.dto.js.map +1 -0
  153. package/dist/features/admin/admin.service.d.ts +142 -0
  154. package/dist/features/admin/admin.service.js +227 -0
  155. package/dist/features/admin/admin.service.js.map +1 -0
  156. package/dist/features/api-keys/api-keys.service.d.ts +67 -0
  157. package/dist/features/api-keys/api-keys.service.js +144 -0
  158. package/dist/features/api-keys/api-keys.service.js.map +1 -0
  159. package/dist/features/email-change/email-change.controller.d.ts +38 -0
  160. package/dist/features/email-change/email-change.controller.js +85 -0
  161. package/dist/features/email-change/email-change.controller.js.map +1 -0
  162. package/dist/features/email-change/email-change.dto.d.ts +10 -0
  163. package/dist/features/email-change/email-change.dto.js +43 -0
  164. package/dist/features/email-change/email-change.dto.js.map +1 -0
  165. package/dist/features/email-change/email-change.service.d.ts +74 -0
  166. package/dist/features/email-change/email-change.service.js +179 -0
  167. package/dist/features/email-change/email-change.service.js.map +1 -0
  168. package/dist/features/email-links/email-verification.service.d.ts +46 -0
  169. package/dist/features/email-links/email-verification.service.js +94 -0
  170. package/dist/features/email-links/email-verification.service.js.map +1 -0
  171. package/dist/features/email-links/link-tokens.service.d.ts +44 -0
  172. package/dist/features/email-links/link-tokens.service.js +122 -0
  173. package/dist/features/email-links/link-tokens.service.js.map +1 -0
  174. package/dist/features/events/auth-events.service.d.ts +52 -0
  175. package/dist/features/events/auth-events.service.js +117 -0
  176. package/dist/features/events/auth-events.service.js.map +1 -0
  177. package/dist/features/maintenance/data-retention.service.d.ts +60 -0
  178. package/dist/features/maintenance/data-retention.service.js +182 -0
  179. package/dist/features/maintenance/data-retention.service.js.map +1 -0
  180. package/dist/features/notifications/notifications.service.d.ts +40 -0
  181. package/dist/features/notifications/notifications.service.js +94 -0
  182. package/dist/features/notifications/notifications.service.js.map +1 -0
  183. package/dist/features/one-time-codes/one-time-codes.service.d.ts +40 -0
  184. package/dist/features/one-time-codes/one-time-codes.service.js +102 -0
  185. package/dist/features/one-time-codes/one-time-codes.service.js.map +1 -0
  186. package/dist/features/organizations/organizations.controller.d.ts +220 -0
  187. package/dist/features/organizations/organizations.controller.js +337 -0
  188. package/dist/features/organizations/organizations.controller.js.map +1 -0
  189. package/dist/features/organizations/organizations.dto.d.ts +31 -0
  190. package/dist/features/organizations/organizations.dto.js +100 -0
  191. package/dist/features/organizations/organizations.dto.js.map +1 -0
  192. package/dist/features/organizations/organizations.service.d.ts +274 -0
  193. package/dist/features/organizations/organizations.service.js +481 -0
  194. package/dist/features/organizations/organizations.service.js.map +1 -0
  195. package/dist/features/passkeys/passkeys.controller.d.ts +92 -0
  196. package/dist/features/passkeys/passkeys.controller.js +183 -0
  197. package/dist/features/passkeys/passkeys.controller.js.map +1 -0
  198. package/dist/features/passkeys/passkeys.dto.d.ts +13 -0
  199. package/dist/features/passkeys/passkeys.dto.js +50 -0
  200. package/dist/features/passkeys/passkeys.dto.js.map +1 -0
  201. package/dist/features/passkeys/passkeys.service.d.ts +159 -0
  202. package/dist/features/passkeys/passkeys.service.js +350 -0
  203. package/dist/features/passkeys/passkeys.service.js.map +1 -0
  204. package/dist/features/passwordless/passwordless-auth.service.d.ts +152 -0
  205. package/dist/features/passwordless/passwordless-auth.service.js +304 -0
  206. package/dist/features/passwordless/passwordless-auth.service.js.map +1 -0
  207. package/dist/features/passwordless/passwordless.controller.d.ts +75 -0
  208. package/dist/features/passwordless/passwordless.controller.js +163 -0
  209. package/dist/features/passwordless/passwordless.controller.js.map +1 -0
  210. package/dist/features/passwordless/passwordless.dto.d.ts +29 -0
  211. package/dist/features/passwordless/passwordless.dto.js +101 -0
  212. package/dist/features/passwordless/passwordless.dto.js.map +1 -0
  213. package/dist/features/passwords/password-auth.service.d.ts +154 -0
  214. package/dist/features/passwords/password-auth.service.js +317 -0
  215. package/dist/features/passwords/password-auth.service.js.map +1 -0
  216. package/dist/features/passwords/password-policy.service.d.ts +63 -0
  217. package/dist/features/passwords/password-policy.service.js +175 -0
  218. package/dist/features/passwords/password-policy.service.js.map +1 -0
  219. package/dist/features/passwords/password.controller.d.ts +95 -0
  220. package/dist/features/passwords/password.controller.js +193 -0
  221. package/dist/features/passwords/password.controller.js.map +1 -0
  222. package/dist/features/passwords/password.dto.d.ts +36 -0
  223. package/dist/features/passwords/password.dto.js +140 -0
  224. package/dist/features/passwords/password.dto.js.map +1 -0
  225. package/dist/features/sessions/session.service.d.ts +132 -0
  226. package/dist/features/sessions/session.service.js +308 -0
  227. package/dist/features/sessions/session.service.js.map +1 -0
  228. package/dist/features/sessions/session.types.d.ts +34 -0
  229. package/dist/features/sessions/session.types.js +3 -0
  230. package/dist/features/sessions/session.types.js.map +1 -0
  231. package/dist/features/settings/settings.defaults.d.ts +2 -0
  232. package/dist/features/settings/settings.defaults.js +7 -0
  233. package/dist/features/settings/settings.defaults.js.map +1 -0
  234. package/dist/features/settings/settings.service.d.ts +44 -0
  235. package/dist/features/settings/settings.service.js +112 -0
  236. package/dist/features/settings/settings.service.js.map +1 -0
  237. package/dist/features/settings/settings.types.d.ts +133 -0
  238. package/dist/features/settings/settings.types.js +3 -0
  239. package/dist/features/settings/settings.types.js.map +1 -0
  240. package/dist/features/settings/settings.validation.d.ts +33 -0
  241. package/dist/features/settings/settings.validation.js +614 -0
  242. package/dist/features/settings/settings.validation.js.map +1 -0
  243. package/dist/features/sign-in/sign-in-challenges.service.d.ts +54 -0
  244. package/dist/features/sign-in/sign-in-challenges.service.js +104 -0
  245. package/dist/features/sign-in/sign-in-challenges.service.js.map +1 -0
  246. package/dist/features/sign-in/sign-in.service.d.ts +127 -0
  247. package/dist/features/sign-in/sign-in.service.js +248 -0
  248. package/dist/features/sign-in/sign-in.service.js.map +1 -0
  249. package/dist/features/sign-in/sign-in.types.d.ts +22 -0
  250. package/dist/features/sign-in/sign-in.types.js +3 -0
  251. package/dist/features/sign-in/sign-in.types.js.map +1 -0
  252. package/dist/features/signing-keys/jwks.controller.d.ts +17 -0
  253. package/dist/features/signing-keys/jwks.controller.js +51 -0
  254. package/dist/features/signing-keys/jwks.controller.js.map +1 -0
  255. package/dist/features/signing-keys/signing-keys.service.d.ts +67 -0
  256. package/dist/features/signing-keys/signing-keys.service.js +142 -0
  257. package/dist/features/signing-keys/signing-keys.service.js.map +1 -0
  258. package/dist/features/social/social-auth.service.d.ts +100 -0
  259. package/dist/features/social/social-auth.service.js +232 -0
  260. package/dist/features/social/social-auth.service.js.map +1 -0
  261. package/dist/features/social/social-providers.service.d.ts +97 -0
  262. package/dist/features/social/social-providers.service.js +214 -0
  263. package/dist/features/social/social-providers.service.js.map +1 -0
  264. package/dist/features/social/social.controller.d.ts +54 -0
  265. package/dist/features/social/social.controller.js +124 -0
  266. package/dist/features/social/social.controller.js.map +1 -0
  267. package/dist/features/social/social.dto.d.ts +11 -0
  268. package/dist/features/social/social.dto.js +38 -0
  269. package/dist/features/social/social.dto.js.map +1 -0
  270. package/dist/features/two-factor/two-factor.controller.d.ts +84 -0
  271. package/dist/features/two-factor/two-factor.controller.js +174 -0
  272. package/dist/features/two-factor/two-factor.controller.js.map +1 -0
  273. package/dist/features/two-factor/two-factor.dto.d.ts +10 -0
  274. package/dist/features/two-factor/two-factor.dto.js +37 -0
  275. package/dist/features/two-factor/two-factor.dto.js.map +1 -0
  276. package/dist/features/two-factor/two-factor.service.d.ts +171 -0
  277. package/dist/features/two-factor/two-factor.service.js +348 -0
  278. package/dist/features/two-factor/two-factor.service.js.map +1 -0
  279. package/dist/features/users/sign-in-methods.service.d.ts +40 -0
  280. package/dist/features/users/sign-in-methods.service.js +81 -0
  281. package/dist/features/users/sign-in-methods.service.js.map +1 -0
  282. package/dist/features/users/sign-up-rules.d.ts +12 -0
  283. package/dist/features/users/sign-up-rules.js +29 -0
  284. package/dist/features/users/sign-up-rules.js.map +1 -0
  285. package/dist/features/users/users.service.d.ts +246 -0
  286. package/dist/features/users/users.service.js +509 -0
  287. package/dist/features/users/users.service.js.map +1 -0
  288. package/dist/features/users/users.types.d.ts +24 -0
  289. package/dist/features/users/users.types.js +3 -0
  290. package/dist/features/users/users.types.js.map +1 -0
  291. package/dist/features/webhooks/webhook-delivery.worker.d.ts +55 -0
  292. package/dist/features/webhooks/webhook-delivery.worker.js +175 -0
  293. package/dist/features/webhooks/webhook-delivery.worker.js.map +1 -0
  294. package/dist/features/webhooks/webhook-signature.d.ts +28 -0
  295. package/dist/features/webhooks/webhook-signature.js +85 -0
  296. package/dist/features/webhooks/webhook-signature.js.map +1 -0
  297. package/dist/features/webhooks/webhooks.service.d.ts +144 -0
  298. package/dist/features/webhooks/webhooks.service.js +238 -0
  299. package/dist/features/webhooks/webhooks.service.js.map +1 -0
  300. package/dist/guards/auth.decorators.d.ts +65 -0
  301. package/dist/guards/auth.decorators.js +68 -0
  302. package/dist/guards/auth.decorators.js.map +1 -0
  303. package/dist/guards/auth.guard.d.ts +47 -0
  304. package/dist/guards/auth.guard.js +132 -0
  305. package/dist/guards/auth.guard.js.map +1 -0
  306. package/dist/index.d.ts +38 -0
  307. package/dist/index.js +95 -0
  308. package/dist/index.js.map +1 -0
  309. package/dist/integrations/console-email-sender.d.ts +15 -0
  310. package/dist/integrations/console-email-sender.js +26 -0
  311. package/dist/integrations/console-email-sender.js.map +1 -0
  312. package/dist/integrations/msg91-sms-sender.d.ts +28 -0
  313. package/dist/integrations/msg91-sms-sender.js +46 -0
  314. package/dist/integrations/msg91-sms-sender.js.map +1 -0
  315. package/docs/README.md +39 -0
  316. package/docs/admin-api-keys-webhooks.md +147 -0
  317. package/docs/api-reference.md +175 -0
  318. package/docs/architecture.md +119 -0
  319. package/docs/client-integration.md +192 -0
  320. package/docs/code-walkthrough.md +273 -0
  321. package/docs/configuration.md +229 -0
  322. package/docs/endpoints/README.md +151 -0
  323. package/docs/endpoints/account.md +363 -0
  324. package/docs/endpoints/admin.md +422 -0
  325. package/docs/endpoints/email-password.md +261 -0
  326. package/docs/endpoints/organizations.md +192 -0
  327. package/docs/endpoints/passkeys.md +195 -0
  328. package/docs/endpoints/passwordless.md +214 -0
  329. package/docs/endpoints/social.md +116 -0
  330. package/docs/endpoints/two-factor.md +146 -0
  331. package/docs/error-codes.md +100 -0
  332. package/docs/events.md +83 -0
  333. package/docs/getting-started.md +139 -0
  334. package/docs/manual-testing.md +215 -0
  335. package/docs/organizations.md +86 -0
  336. package/docs/production-checklist.md +60 -0
  337. package/docs/protecting-routes.md +147 -0
  338. package/docs/security.md +61 -0
  339. package/docs/sign-in-flows.md +294 -0
  340. package/package.json +92 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ import { EmailChangeAndRetention1792700000000 } from './email-change-and-retention.migration';
3
+ /**
4
+ * Creates every auth_* table. Add AUTH_MIGRATIONS to your DataSource `migrations` and run them
5
+ * with your usual command. Requires PostgreSQL 13 or newer (for gen_random_uuid()).
6
+ *
7
+ * Deleting a user deletes everything that belongs to them (ON DELETE CASCADE),
8
+ * except audit logs, which are kept as history.
9
+ */
10
+ export declare class CreateAuthTables1792600000000 implements MigrationInterface {
11
+ name: string;
12
+ /**
13
+ * Creates every auth_* table, index and constraint.
14
+ *
15
+ * @param database - TypeORM's query runner.
16
+ */
17
+ up(database: QueryRunner): Promise<void>;
18
+ /**
19
+ * Drops every auth_* table. All authentication data is lost.
20
+ *
21
+ * @param database - TypeORM's query runner.
22
+ */
23
+ down(database: QueryRunner): Promise<void>;
24
+ }
25
+ /** Add these to your TypeORM DataSource `migrations` list (in this order). */
26
+ export declare const AUTH_MIGRATIONS: (typeof EmailChangeAndRetention1792700000000)[];
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AUTH_MIGRATIONS = exports.CreateAuthTables1792600000000 = void 0;
4
+ const email_change_and_retention_migration_1 = require("./email-change-and-retention.migration");
5
+ /**
6
+ * Creates every auth_* table. Add AUTH_MIGRATIONS to your DataSource `migrations` and run them
7
+ * with your usual command. Requires PostgreSQL 13 or newer (for gen_random_uuid()).
8
+ *
9
+ * Deleting a user deletes everything that belongs to them (ON DELETE CASCADE),
10
+ * except audit logs, which are kept as history.
11
+ */
12
+ class CreateAuthTables1792600000000 {
13
+ name = 'CreateAuthTables1792600000000';
14
+ /**
15
+ * Creates every auth_* table, index and constraint.
16
+ *
17
+ * @param database - TypeORM's query runner.
18
+ */
19
+ async up(database) {
20
+ // ---- People and how they sign in ----
21
+ await database.query(`
22
+ CREATE TABLE auth_users (
23
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
24
+ email text CHECK (email = lower(email)),
25
+ email_verified boolean NOT NULL DEFAULT false,
26
+ phone_number text CHECK (phone_number ~ '^\\+[1-9][0-9]{7,14}$'),
27
+ phone_verified boolean NOT NULL DEFAULT false,
28
+ first_name text,
29
+ last_name text,
30
+ roles text[] NOT NULL DEFAULT '{}',
31
+ status text NOT NULL DEFAULT 'PENDING_VERIFICATION'
32
+ CHECK (status IN ('PENDING_VERIFICATION', 'ACTIVE', 'SUSPENDED', 'DEACTIVATED', 'DELETED')),
33
+ suspension_reason text,
34
+ status_changed_at timestamptz,
35
+ terms_accepted_at timestamptz,
36
+ privacy_policy_accepted_at timestamptz,
37
+ onboarding_completed_at timestamptz,
38
+ two_factor_enabled boolean NOT NULL DEFAULT false,
39
+ metadata jsonb NOT NULL DEFAULT '{}',
40
+ last_signed_in_at timestamptz,
41
+ created_at timestamptz NOT NULL DEFAULT now(),
42
+ updated_at timestamptz NOT NULL DEFAULT now(),
43
+ -- Every live account can be reached by email or phone; deleted accounts keep no contact details.
44
+ CONSTRAINT auth_users_has_email_or_phone CHECK (status = 'DELETED' OR email IS NOT NULL OR phone_number IS NOT NULL)
45
+ )`);
46
+ await database.query(`CREATE UNIQUE INDEX auth_users_email_unique ON auth_users (email) WHERE email IS NOT NULL`);
47
+ await database.query(`CREATE UNIQUE INDEX auth_users_phone_unique ON auth_users (phone_number) WHERE phone_number IS NOT NULL`);
48
+ await database.query(`
49
+ CREATE TABLE auth_passwords (
50
+ user_id uuid PRIMARY KEY REFERENCES auth_users(id) ON DELETE CASCADE,
51
+ password_hash text NOT NULL CHECK (password_hash LIKE '$argon2id$%'),
52
+ updated_at timestamptz NOT NULL DEFAULT now()
53
+ )`);
54
+ await database.query(`
55
+ CREATE TABLE auth_social_accounts (
56
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
57
+ user_id uuid NOT NULL REFERENCES auth_users(id) ON DELETE CASCADE,
58
+ provider text NOT NULL CHECK (provider IN ('google', 'apple', 'facebook')),
59
+ provider_user_id text NOT NULL,
60
+ email text,
61
+ created_at timestamptz NOT NULL DEFAULT now(),
62
+ CONSTRAINT auth_social_accounts_unique UNIQUE (provider, provider_user_id)
63
+ )`);
64
+ await database.query(`CREATE INDEX auth_social_accounts_user ON auth_social_accounts (user_id)`);
65
+ await database.query(`
66
+ CREATE TABLE auth_passkeys (
67
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
68
+ user_id uuid NOT NULL REFERENCES auth_users(id) ON DELETE CASCADE,
69
+ credential_id text NOT NULL UNIQUE,
70
+ public_key text NOT NULL,
71
+ sign_count bigint NOT NULL DEFAULT 0,
72
+ transports text[] NOT NULL DEFAULT '{}',
73
+ name text NOT NULL,
74
+ is_backed_up boolean NOT NULL DEFAULT false,
75
+ created_at timestamptz NOT NULL DEFAULT now(),
76
+ last_used_at timestamptz
77
+ )`);
78
+ await database.query(`CREATE INDEX auth_passkeys_user ON auth_passkeys (user_id)`);
79
+ await database.query(`
80
+ CREATE TABLE auth_two_factor_secrets (
81
+ user_id uuid PRIMARY KEY REFERENCES auth_users(id) ON DELETE CASCADE,
82
+ encrypted_secret text NOT NULL,
83
+ confirmed_at timestamptz,
84
+ last_used_time_step bigint,
85
+ created_at timestamptz NOT NULL DEFAULT now()
86
+ )`);
87
+ await database.query(`
88
+ CREATE TABLE auth_backup_codes (
89
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
90
+ user_id uuid NOT NULL REFERENCES auth_users(id) ON DELETE CASCADE,
91
+ code_hash text NOT NULL,
92
+ salt text NOT NULL,
93
+ used_at timestamptz,
94
+ created_at timestamptz NOT NULL DEFAULT now()
95
+ )`);
96
+ await database.query(`CREATE INDEX auth_backup_codes_user ON auth_backup_codes (user_id)`);
97
+ // ---- Sessions and tokens ----
98
+ await database.query(`
99
+ CREATE TABLE auth_organizations (
100
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
101
+ name text NOT NULL,
102
+ slug text NOT NULL UNIQUE,
103
+ metadata jsonb NOT NULL DEFAULT '{}',
104
+ created_by_user_id uuid REFERENCES auth_users(id) ON DELETE SET NULL,
105
+ created_at timestamptz NOT NULL DEFAULT now(),
106
+ updated_at timestamptz NOT NULL DEFAULT now()
107
+ )`);
108
+ await database.query(`
109
+ CREATE TABLE auth_sessions (
110
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
111
+ user_id uuid NOT NULL REFERENCES auth_users(id) ON DELETE CASCADE,
112
+ sign_in_method text NOT NULL,
113
+ used_two_factor boolean NOT NULL DEFAULT false,
114
+ active_organization_id uuid REFERENCES auth_organizations(id) ON DELETE SET NULL,
115
+ ip_address text,
116
+ user_agent text,
117
+ created_at timestamptz NOT NULL DEFAULT now(),
118
+ last_used_at timestamptz NOT NULL DEFAULT now(),
119
+ expires_at timestamptz NOT NULL,
120
+ revoked_at timestamptz,
121
+ revoked_reason text
122
+ )`);
123
+ await database.query(`CREATE INDEX auth_sessions_user_active ON auth_sessions (user_id) WHERE revoked_at IS NULL`);
124
+ await database.query(`
125
+ CREATE TABLE auth_refresh_tokens (
126
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
127
+ session_id uuid NOT NULL REFERENCES auth_sessions(id) ON DELETE CASCADE,
128
+ token_hash text NOT NULL UNIQUE,
129
+ expires_at timestamptz NOT NULL,
130
+ used_at timestamptz,
131
+ created_at timestamptz NOT NULL DEFAULT now()
132
+ )`);
133
+ await database.query(`CREATE INDEX auth_refresh_tokens_session ON auth_refresh_tokens (session_id)`);
134
+ await database.query(`
135
+ CREATE TABLE auth_link_tokens (
136
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
137
+ purpose text NOT NULL CHECK (purpose IN ('verify_email', 'reset_password', 'magic_sign_in')),
138
+ user_id uuid REFERENCES auth_users(id) ON DELETE CASCADE,
139
+ email text NOT NULL,
140
+ token_hash text NOT NULL UNIQUE,
141
+ expires_at timestamptz NOT NULL,
142
+ used_at timestamptz,
143
+ created_at timestamptz NOT NULL DEFAULT now()
144
+ )`);
145
+ await database.query(`CREATE INDEX auth_link_tokens_email ON auth_link_tokens (email, purpose)`);
146
+ await database.query(`
147
+ CREATE TABLE auth_one_time_codes (
148
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
149
+ channel text NOT NULL CHECK (channel IN ('email', 'sms')),
150
+ destination text NOT NULL,
151
+ code_hash text NOT NULL,
152
+ salt text NOT NULL,
153
+ failed_attempts integer NOT NULL DEFAULT 0,
154
+ expires_at timestamptz NOT NULL,
155
+ used_at timestamptz,
156
+ created_at timestamptz NOT NULL DEFAULT now()
157
+ )`);
158
+ await database.query(`CREATE INDEX auth_one_time_codes_destination ON auth_one_time_codes (channel, destination, created_at DESC)`);
159
+ await database.query(`
160
+ CREATE TABLE auth_sign_in_challenges (
161
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
162
+ purpose text NOT NULL CHECK (purpose IN ('two_factor', 'passkey_registration', 'passkey_sign_in', 'reactivate_account')),
163
+ user_id uuid REFERENCES auth_users(id) ON DELETE CASCADE,
164
+ challenge_token_hash text,
165
+ webauthn_challenge text,
166
+ sign_in_method text,
167
+ failed_attempts integer NOT NULL DEFAULT 0,
168
+ expires_at timestamptz NOT NULL,
169
+ used_at timestamptz,
170
+ created_at timestamptz NOT NULL DEFAULT now()
171
+ )`);
172
+ await database.query(`CREATE UNIQUE INDEX auth_sign_in_challenges_token ON auth_sign_in_challenges (challenge_token_hash) WHERE challenge_token_hash IS NOT NULL`);
173
+ await database.query(`
174
+ CREATE TABLE auth_signing_keys (
175
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
176
+ key_id text NOT NULL UNIQUE,
177
+ public_key jsonb NOT NULL,
178
+ encrypted_private_key text NOT NULL,
179
+ created_at timestamptz NOT NULL DEFAULT now(),
180
+ retired_at timestamptz
181
+ )`);
182
+ // Only one key may be in use at a time.
183
+ await database.query(`CREATE UNIQUE INDEX auth_signing_keys_one_current ON auth_signing_keys ((true)) WHERE retired_at IS NULL`);
184
+ // ---- Settings and history ----
185
+ await database.query(`
186
+ CREATE TABLE auth_settings (
187
+ id integer PRIMARY KEY DEFAULT 1 CHECK (id = 1),
188
+ changed_values jsonb NOT NULL,
189
+ changed_by text NOT NULL,
190
+ updated_at timestamptz NOT NULL DEFAULT now()
191
+ )`);
192
+ await database.query(`
193
+ CREATE TABLE auth_audit_logs (
194
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
195
+ user_id uuid,
196
+ performed_by text,
197
+ event_name text NOT NULL,
198
+ ip_address text,
199
+ user_agent text,
200
+ details jsonb NOT NULL DEFAULT '{}',
201
+ created_at timestamptz NOT NULL DEFAULT now()
202
+ )`);
203
+ await database.query(`CREATE INDEX auth_audit_logs_created ON auth_audit_logs (created_at DESC)`);
204
+ await database.query(`CREATE INDEX auth_audit_logs_user ON auth_audit_logs (user_id, created_at DESC)`);
205
+ // ---- Organizations ----
206
+ await database.query(`
207
+ CREATE TABLE auth_organization_members (
208
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
209
+ organization_id uuid NOT NULL REFERENCES auth_organizations(id) ON DELETE CASCADE,
210
+ user_id uuid NOT NULL REFERENCES auth_users(id) ON DELETE CASCADE,
211
+ role text NOT NULL CHECK (role IN ('owner', 'admin', 'member')),
212
+ created_at timestamptz NOT NULL DEFAULT now(),
213
+ CONSTRAINT auth_organization_members_unique UNIQUE (organization_id, user_id)
214
+ )`);
215
+ await database.query(`CREATE INDEX auth_organization_members_user ON auth_organization_members (user_id)`);
216
+ await database.query(`
217
+ CREATE TABLE auth_organization_invitations (
218
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
219
+ organization_id uuid NOT NULL REFERENCES auth_organizations(id) ON DELETE CASCADE,
220
+ email text NOT NULL,
221
+ role text NOT NULL CHECK (role IN ('owner', 'admin', 'member')),
222
+ token_hash text NOT NULL UNIQUE,
223
+ invited_by_user_id uuid NOT NULL REFERENCES auth_users(id) ON DELETE CASCADE,
224
+ expires_at timestamptz NOT NULL,
225
+ accepted_at timestamptz,
226
+ revoked_at timestamptz,
227
+ created_at timestamptz NOT NULL DEFAULT now()
228
+ )`);
229
+ await database.query(`CREATE INDEX auth_organization_invitations_org ON auth_organization_invitations (organization_id)`);
230
+ // ---- Machine access and webhooks ----
231
+ await database.query(`
232
+ CREATE TABLE auth_api_keys (
233
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
234
+ name text NOT NULL,
235
+ key_hash text NOT NULL UNIQUE,
236
+ key_preview text NOT NULL,
237
+ scopes text[] NOT NULL DEFAULT '{}',
238
+ organization_id uuid REFERENCES auth_organizations(id) ON DELETE CASCADE,
239
+ created_by_user_id uuid REFERENCES auth_users(id) ON DELETE SET NULL,
240
+ created_at timestamptz NOT NULL DEFAULT now(),
241
+ last_used_at timestamptz,
242
+ expires_at timestamptz,
243
+ revoked_at timestamptz
244
+ )`);
245
+ await database.query(`
246
+ CREATE TABLE auth_webhooks (
247
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
248
+ url text NOT NULL,
249
+ event_names text[] NOT NULL DEFAULT '{}',
250
+ encrypted_signing_secret text NOT NULL,
251
+ is_enabled boolean NOT NULL DEFAULT true,
252
+ description text,
253
+ created_at timestamptz NOT NULL DEFAULT now()
254
+ )`);
255
+ await database.query(`
256
+ CREATE TABLE auth_webhook_deliveries (
257
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
258
+ webhook_id uuid NOT NULL REFERENCES auth_webhooks(id) ON DELETE CASCADE,
259
+ event_name text NOT NULL,
260
+ payload jsonb NOT NULL,
261
+ status text NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'delivered', 'failed')),
262
+ attempt_count integer NOT NULL DEFAULT 0,
263
+ next_attempt_at timestamptz NOT NULL DEFAULT now(),
264
+ last_response_status integer,
265
+ last_error text,
266
+ created_at timestamptz NOT NULL DEFAULT now(),
267
+ delivered_at timestamptz
268
+ )`);
269
+ await database.query(`CREATE INDEX auth_webhook_deliveries_due ON auth_webhook_deliveries (next_attempt_at) WHERE status = 'pending'`);
270
+ await database.query(`CREATE INDEX auth_webhook_deliveries_webhook ON auth_webhook_deliveries (webhook_id, created_at DESC)`);
271
+ }
272
+ /**
273
+ * Drops every auth_* table. All authentication data is lost.
274
+ *
275
+ * @param database - TypeORM's query runner.
276
+ */
277
+ async down(database) {
278
+ await database.query(`
279
+ DROP TABLE IF EXISTS
280
+ auth_webhook_deliveries, auth_webhooks, auth_api_keys,
281
+ auth_organization_invitations, auth_organization_members,
282
+ auth_audit_logs, auth_settings, auth_signing_keys, auth_sign_in_challenges,
283
+ auth_one_time_codes, auth_link_tokens, auth_refresh_tokens, auth_sessions,
284
+ auth_organizations, auth_backup_codes, auth_two_factor_secrets, auth_passkeys,
285
+ auth_social_accounts, auth_passwords, auth_users`);
286
+ }
287
+ }
288
+ exports.CreateAuthTables1792600000000 = CreateAuthTables1792600000000;
289
+ /** Add these to your TypeORM DataSource `migrations` list (in this order). */
290
+ exports.AUTH_MIGRATIONS = [CreateAuthTables1792600000000, email_change_and_retention_migration_1.EmailChangeAndRetention1792700000000];
291
+ //# sourceMappingURL=create-auth-tables.migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-auth-tables.migration.js","sourceRoot":"","sources":["../../src/database/create-auth-tables.migration.ts"],"names":[],"mappings":";;;AACA,iGAA8F;AAE9F;;;;;;GAMG;AACH,MAAa,6BAA6B;IACxC,IAAI,GAAG,+BAA+B,CAAC;IAEvC;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,QAAqB;QAC5B,wCAAwC;QAExC,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;QAwBjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAC;QAClH,MAAM,QAAQ,CAAC,KAAK,CAAC,yGAAyG,CAAC,CAAC;QAEhI,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;QAKjB,CAAC,CAAC;QAEN,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;QASjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAEjG,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;QAYjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAEnF,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;QAOjB,CAAC,CAAC;QAEN,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;QAQjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;QAE3F,gCAAgC;QAEhC,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;QASjB,CAAC,CAAC;QAEN,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;;;QAcjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;QAEnH,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;QAQjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAErG,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;QAUjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAEjG,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;QAWjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,6GAA6G,CAAC,CAAC;QAEpI,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;QAYjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAClB,4IAA4I,CAC7I,CAAC;QAEF,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;QAQjB,CAAC,CAAC;QACN,wCAAwC;QACxC,MAAM,QAAQ,CAAC,KAAK,CAAC,0GAA0G,CAAC,CAAC;QAEjI,iCAAiC;QAEjC,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;QAMjB,CAAC,CAAC;QAEN,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;QAUjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAClG,MAAM,QAAQ,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;QAExG,0BAA0B;QAE1B,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;QAQjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;QAE3G,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;QAYjB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,mGAAmG,CAAC,CAAC;QAE1H,wCAAwC;QAExC,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;;QAajB,CAAC,CAAC;QAEN,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;QASjB,CAAC,CAAC;QAEN,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;;;;;;;QAajB,CAAC,CAAC;QACN,MAAM,QAAQ,CAAC,KAAK,CAAC,gHAAgH,CAAC,CAAC;QACvI,MAAM,QAAQ,CAAC,KAAK,CAAC,uGAAuG,CAAC,CAAC;IAChI,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,QAAqB;QAC9B,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;;;;yDAOgC,CAAC,CAAC;IACzD,CAAC;CACF;AA/SD,sEA+SC;AAED,8EAA8E;AACjE,QAAA,eAAe,GAAG,CAAC,6BAA6B,EAAE,2EAAoC,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+ /**
3
+ * Version 0.2:
4
+ * - emailed links can also confirm an email change ("change_email"),
5
+ * - indexes so the data-retention cleanup finds old rows without scanning whole tables.
6
+ *
7
+ * TypeORM runs migrations inside a transaction, so the indexes are not built CONCURRENTLY. On very
8
+ * large existing tables, build them CONCURRENTLY yourself first (same names); IF NOT EXISTS then
9
+ * skips them here.
10
+ */
11
+ export declare class EmailChangeAndRetention1792700000000 implements MigrationInterface {
12
+ name: string;
13
+ /**
14
+ * Allows "change_email" links and adds the indexes the data-retention cleanup uses.
15
+ *
16
+ * @param database - TypeORM's query runner.
17
+ */
18
+ up(database: QueryRunner): Promise<void>;
19
+ /**
20
+ * Removes those indexes and deletes any "change_email" links.
21
+ *
22
+ * @param database - TypeORM's query runner.
23
+ */
24
+ down(database: QueryRunner): Promise<void>;
25
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EmailChangeAndRetention1792700000000 = void 0;
4
+ /**
5
+ * Version 0.2:
6
+ * - emailed links can also confirm an email change ("change_email"),
7
+ * - indexes so the data-retention cleanup finds old rows without scanning whole tables.
8
+ *
9
+ * TypeORM runs migrations inside a transaction, so the indexes are not built CONCURRENTLY. On very
10
+ * large existing tables, build them CONCURRENTLY yourself first (same names); IF NOT EXISTS then
11
+ * skips them here.
12
+ */
13
+ class EmailChangeAndRetention1792700000000 {
14
+ name = 'EmailChangeAndRetention1792700000000';
15
+ /**
16
+ * Allows "change_email" links and adds the indexes the data-retention cleanup uses.
17
+ *
18
+ * @param database - TypeORM's query runner.
19
+ */
20
+ async up(database) {
21
+ await database.query(`ALTER TABLE auth_link_tokens DROP CONSTRAINT IF EXISTS auth_link_tokens_purpose_check`);
22
+ await database.query(`
23
+ ALTER TABLE auth_link_tokens ADD CONSTRAINT auth_link_tokens_purpose_check
24
+ CHECK (purpose IN ('verify_email', 'reset_password', 'magic_sign_in', 'change_email'))`);
25
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_link_tokens_user ON auth_link_tokens (user_id, purpose) WHERE used_at IS NULL`);
26
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_sessions_expires ON auth_sessions (expires_at)`);
27
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_sessions_revoked ON auth_sessions (revoked_at) WHERE revoked_at IS NOT NULL`);
28
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_refresh_tokens_expires ON auth_refresh_tokens (expires_at)`);
29
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_link_tokens_expires ON auth_link_tokens (expires_at)`);
30
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_one_time_codes_expires ON auth_one_time_codes (expires_at)`);
31
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_sign_in_challenges_expires ON auth_sign_in_challenges (expires_at)`);
32
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_organization_invitations_expires ON auth_organization_invitations (expires_at)`);
33
+ await database.query(`CREATE INDEX IF NOT EXISTS auth_webhook_deliveries_finished ON auth_webhook_deliveries (created_at) WHERE status <> 'pending'`);
34
+ }
35
+ /**
36
+ * Removes those indexes and deletes any "change_email" links.
37
+ *
38
+ * @param database - TypeORM's query runner.
39
+ */
40
+ async down(database) {
41
+ await database.query(`
42
+ DROP INDEX IF EXISTS
43
+ auth_webhook_deliveries_finished, auth_organization_invitations_expires, auth_sign_in_challenges_expires,
44
+ auth_one_time_codes_expires, auth_link_tokens_expires, auth_refresh_tokens_expires,
45
+ auth_sessions_revoked, auth_sessions_expires, auth_link_tokens_user`);
46
+ await database.query(`DELETE FROM auth_link_tokens WHERE purpose = 'change_email'`);
47
+ await database.query(`ALTER TABLE auth_link_tokens DROP CONSTRAINT IF EXISTS auth_link_tokens_purpose_check`);
48
+ await database.query(`
49
+ ALTER TABLE auth_link_tokens ADD CONSTRAINT auth_link_tokens_purpose_check
50
+ CHECK (purpose IN ('verify_email', 'reset_password', 'magic_sign_in'))`);
51
+ }
52
+ }
53
+ exports.EmailChangeAndRetention1792700000000 = EmailChangeAndRetention1792700000000;
54
+ //# sourceMappingURL=email-change-and-retention.migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-change-and-retention.migration.js","sourceRoot":"","sources":["../../src/database/email-change-and-retention.migration.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;GAQG;AACH,MAAa,oCAAoC;IAC/C,IAAI,GAAG,sCAAsC,CAAC;IAE9C;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,QAAqB;QAC5B,MAAM,QAAQ,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAC9G,MAAM,QAAQ,CAAC,KAAK,CAAC;;+FAEsE,CAAC,CAAC;QAC7F,MAAM,QAAQ,CAAC,KAAK,CAAC,+GAA+G,CAAC,CAAC;QAEtI,MAAM,QAAQ,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QACvG,MAAM,QAAQ,CAAC,KAAK,CAAC,6GAA6G,CAAC,CAAC;QACpI,MAAM,QAAQ,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;QACnH,MAAM,QAAQ,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;QAC7G,MAAM,QAAQ,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;QACnH,MAAM,QAAQ,CAAC,KAAK,CAAC,oGAAoG,CAAC,CAAC;QAC3H,MAAM,QAAQ,CAAC,KAAK,CAAC,gHAAgH,CAAC,CAAC;QACvI,MAAM,QAAQ,CAAC,KAAK,CAClB,+HAA+H,CAChI,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CAAC,QAAqB;QAC9B,MAAM,QAAQ,CAAC,KAAK,CAAC;;;;4EAImD,CAAC,CAAC;QAC1E,MAAM,QAAQ,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACpF,MAAM,QAAQ,CAAC,KAAK,CAAC,uFAAuF,CAAC,CAAC;QAC9G,MAAM,QAAQ,CAAC,KAAK,CAAC;;+EAEsD,CAAC,CAAC;IAC/E,CAAC;CACF;AA5CD,oFA4CC"}
@@ -0,0 +1,17 @@
1
+ /** A key that lets another server call your API (machine to machine). Stored hashed. */
2
+ export declare class ApiKeyEntity {
3
+ id: string;
4
+ name: string;
5
+ keyHash: string;
6
+ /** First characters, shown in lists so people can tell keys apart, e.g. "ak_3Fx9". */
7
+ keyPreview: string;
8
+ /** What the key may do, e.g. ["rides:read"]. Your routes check these with @ApiKeyScopes(). */
9
+ scopes: string[];
10
+ /** When set, the key acts on behalf of this organization only. */
11
+ organizationId: string | null;
12
+ createdByUserId: string | null;
13
+ createdAt: Date;
14
+ lastUsedAt: Date | null;
15
+ expiresAt: Date | null;
16
+ revokedAt: Date | null;
17
+ }
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ApiKeyEntity = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ /** A key that lets another server call your API (machine to machine). Stored hashed. */
15
+ let ApiKeyEntity = class ApiKeyEntity {
16
+ id;
17
+ name;
18
+ keyHash;
19
+ /** First characters, shown in lists so people can tell keys apart, e.g. "ak_3Fx9". */
20
+ keyPreview;
21
+ /** What the key may do, e.g. ["rides:read"]. Your routes check these with @ApiKeyScopes(). */
22
+ scopes;
23
+ /** When set, the key acts on behalf of this organization only. */
24
+ organizationId;
25
+ createdByUserId;
26
+ createdAt;
27
+ lastUsedAt;
28
+ expiresAt;
29
+ revokedAt;
30
+ };
31
+ exports.ApiKeyEntity = ApiKeyEntity;
32
+ __decorate([
33
+ (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
34
+ __metadata("design:type", String)
35
+ ], ApiKeyEntity.prototype, "id", void 0);
36
+ __decorate([
37
+ (0, typeorm_1.Column)({ type: 'text' }),
38
+ __metadata("design:type", String)
39
+ ], ApiKeyEntity.prototype, "name", void 0);
40
+ __decorate([
41
+ (0, typeorm_1.Index)({ unique: true }),
42
+ (0, typeorm_1.Column)({ name: 'key_hash', type: 'text' }),
43
+ __metadata("design:type", String)
44
+ ], ApiKeyEntity.prototype, "keyHash", void 0);
45
+ __decorate([
46
+ (0, typeorm_1.Column)({ name: 'key_preview', type: 'text' }),
47
+ __metadata("design:type", String)
48
+ ], ApiKeyEntity.prototype, "keyPreview", void 0);
49
+ __decorate([
50
+ (0, typeorm_1.Column)({ type: 'text', array: true, default: '{}' }),
51
+ __metadata("design:type", Array)
52
+ ], ApiKeyEntity.prototype, "scopes", void 0);
53
+ __decorate([
54
+ (0, typeorm_1.Column)({ name: 'organization_id', type: 'uuid', nullable: true }),
55
+ __metadata("design:type", Object)
56
+ ], ApiKeyEntity.prototype, "organizationId", void 0);
57
+ __decorate([
58
+ (0, typeorm_1.Column)({ name: 'created_by_user_id', type: 'uuid', nullable: true }),
59
+ __metadata("design:type", Object)
60
+ ], ApiKeyEntity.prototype, "createdByUserId", void 0);
61
+ __decorate([
62
+ (0, typeorm_1.CreateDateColumn)({ name: 'created_at', type: 'timestamptz' }),
63
+ __metadata("design:type", Date)
64
+ ], ApiKeyEntity.prototype, "createdAt", void 0);
65
+ __decorate([
66
+ (0, typeorm_1.Column)({ name: 'last_used_at', type: 'timestamptz', nullable: true }),
67
+ __metadata("design:type", Object)
68
+ ], ApiKeyEntity.prototype, "lastUsedAt", void 0);
69
+ __decorate([
70
+ (0, typeorm_1.Column)({ name: 'expires_at', type: 'timestamptz', nullable: true }),
71
+ __metadata("design:type", Object)
72
+ ], ApiKeyEntity.prototype, "expiresAt", void 0);
73
+ __decorate([
74
+ (0, typeorm_1.Column)({ name: 'revoked_at', type: 'timestamptz', nullable: true }),
75
+ __metadata("design:type", Object)
76
+ ], ApiKeyEntity.prototype, "revokedAt", void 0);
77
+ exports.ApiKeyEntity = ApiKeyEntity = __decorate([
78
+ (0, typeorm_1.Entity)('auth_api_keys')
79
+ ], ApiKeyEntity);
80
+ //# sourceMappingURL=api-key.entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-key.entity.js","sourceRoot":"","sources":["../../../src/database/entities/api-key.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA0F;AAE1F,wFAAwF;AAEjF,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEvB,EAAE,CAAS;IAGX,IAAI,CAAS;IAIb,OAAO,CAAS;IAEhB,sFAAsF;IAEtF,UAAU,CAAS;IAEnB,8FAA8F;IAE9F,MAAM,CAAW;IAEjB,kEAAkE;IAElE,cAAc,CAAgB;IAG9B,eAAe,CAAgB;IAG/B,SAAS,CAAO;IAGhB,UAAU,CAAc;IAGxB,SAAS,CAAc;IAGvB,SAAS,CAAc;CACxB,CAAA;AArCY,oCAAY;AAEvB;IADC,IAAA,gCAAsB,EAAC,MAAM,CAAC;;wCACpB;AAGX;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;0CACZ;AAIb;IAFC,IAAA,eAAK,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvB,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;6CAC3B;AAIhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;gDAC3B;AAInB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;4CACpC;AAIjB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;oDACpC;AAG9B;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;qDACtC;AAG/B;IADC,IAAA,0BAAgB,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;8BACnD,IAAI;+CAAC;AAGhB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDAC9C;AAGxB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CAC7C;AAGvB;IADC,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CAC7C;uBApCZ,YAAY;IADxB,IAAA,gBAAM,EAAC,eAAe,CAAC;GACX,YAAY,CAqCxB"}
@@ -0,0 +1,13 @@
1
+ import type { JsonObject } from './json-object';
2
+ /** Security history: sign-ins, failures, password changes, admin actions. Never contains secrets. */
3
+ export declare class AuditLogEntity {
4
+ id: string;
5
+ userId: string | null;
6
+ /** Who did it, when not the user themself: "admin:<id>", "system". */
7
+ performedBy: string | null;
8
+ eventName: string;
9
+ ipAddress: string | null;
10
+ userAgent: string | null;
11
+ details: JsonObject;
12
+ createdAt: Date;
13
+ }