@portaidentity/server 1.7.0

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 (742) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +21 -0
  3. package/README.md +33 -0
  4. package/dist/applications/cache.d.ts +64 -0
  5. package/dist/applications/cache.d.ts.map +1 -0
  6. package/dist/applications/cache.js +161 -0
  7. package/dist/applications/cache.js.map +1 -0
  8. package/dist/applications/errors.d.ts +25 -0
  9. package/dist/applications/errors.d.ts.map +1 -0
  10. package/dist/applications/errors.js +31 -0
  11. package/dist/applications/errors.js.map +1 -0
  12. package/dist/applications/index.d.ts +17 -0
  13. package/dist/applications/index.d.ts.map +1 -0
  14. package/dist/applications/index.js +19 -0
  15. package/dist/applications/index.js.map +1 -0
  16. package/dist/applications/repository.d.ts +184 -0
  17. package/dist/applications/repository.d.ts.map +1 -0
  18. package/dist/applications/repository.js +367 -0
  19. package/dist/applications/repository.js.map +1 -0
  20. package/dist/applications/service.d.ts +160 -0
  21. package/dist/applications/service.d.ts.map +1 -0
  22. package/dist/applications/service.js +388 -0
  23. package/dist/applications/service.js.map +1 -0
  24. package/dist/applications/slugs.d.ts +61 -0
  25. package/dist/applications/slugs.d.ts.map +1 -0
  26. package/dist/applications/slugs.js +115 -0
  27. package/dist/applications/slugs.js.map +1 -0
  28. package/dist/applications/types.d.ts +129 -0
  29. package/dist/applications/types.d.ts.map +1 -0
  30. package/dist/applications/types.js +62 -0
  31. package/dist/applications/types.js.map +1 -0
  32. package/dist/auth/csrf.d.ts +71 -0
  33. package/dist/auth/csrf.d.ts.map +1 -0
  34. package/dist/auth/csrf.js +112 -0
  35. package/dist/auth/csrf.js.map +1 -0
  36. package/dist/auth/email-renderer.d.ts +37 -0
  37. package/dist/auth/email-renderer.d.ts.map +1 -0
  38. package/dist/auth/email-renderer.js +116 -0
  39. package/dist/auth/email-renderer.js.map +1 -0
  40. package/dist/auth/email-service.d.ts +154 -0
  41. package/dist/auth/email-service.d.ts.map +1 -0
  42. package/dist/auth/email-service.js +415 -0
  43. package/dist/auth/email-service.js.map +1 -0
  44. package/dist/auth/email-transport.d.ts +65 -0
  45. package/dist/auth/email-transport.d.ts.map +1 -0
  46. package/dist/auth/email-transport.js +82 -0
  47. package/dist/auth/email-transport.js.map +1 -0
  48. package/dist/auth/i18n.d.ts +81 -0
  49. package/dist/auth/i18n.d.ts.map +1 -0
  50. package/dist/auth/i18n.js +395 -0
  51. package/dist/auth/i18n.js.map +1 -0
  52. package/dist/auth/index.d.ts +28 -0
  53. package/dist/auth/index.d.ts.map +1 -0
  54. package/dist/auth/index.js +31 -0
  55. package/dist/auth/index.js.map +1 -0
  56. package/dist/auth/interaction-authority.d.ts +39 -0
  57. package/dist/auth/interaction-authority.d.ts.map +1 -0
  58. package/dist/auth/interaction-authority.js +30 -0
  59. package/dist/auth/interaction-authority.js.map +1 -0
  60. package/dist/auth/magic-link-session.d.ts +81 -0
  61. package/dist/auth/magic-link-session.d.ts.map +1 -0
  62. package/dist/auth/magic-link-session.js +183 -0
  63. package/dist/auth/magic-link-session.js.map +1 -0
  64. package/dist/auth/rate-limiter.d.ts +143 -0
  65. package/dist/auth/rate-limiter.d.ts.map +1 -0
  66. package/dist/auth/rate-limiter.js +220 -0
  67. package/dist/auth/rate-limiter.js.map +1 -0
  68. package/dist/auth/recovery-crypto.d.ts +34 -0
  69. package/dist/auth/recovery-crypto.d.ts.map +1 -0
  70. package/dist/auth/recovery-crypto.js +103 -0
  71. package/dist/auth/recovery-crypto.js.map +1 -0
  72. package/dist/auth/recovery-job-processor.d.ts +24 -0
  73. package/dist/auth/recovery-job-processor.d.ts.map +1 -0
  74. package/dist/auth/recovery-job-processor.js +123 -0
  75. package/dist/auth/recovery-job-processor.js.map +1 -0
  76. package/dist/auth/recovery-job-repository.d.ts +219 -0
  77. package/dist/auth/recovery-job-repository.d.ts.map +1 -0
  78. package/dist/auth/recovery-job-repository.js +340 -0
  79. package/dist/auth/recovery-job-repository.js.map +1 -0
  80. package/dist/auth/recovery-service.d.ts +27 -0
  81. package/dist/auth/recovery-service.d.ts.map +1 -0
  82. package/dist/auth/recovery-service.js +53 -0
  83. package/dist/auth/recovery-service.js.map +1 -0
  84. package/dist/auth/recovery-worker.d.ts +158 -0
  85. package/dist/auth/recovery-worker.d.ts.map +1 -0
  86. package/dist/auth/recovery-worker.js +306 -0
  87. package/dist/auth/recovery-worker.js.map +1 -0
  88. package/dist/auth/template-engine.d.ts +134 -0
  89. package/dist/auth/template-engine.d.ts.map +1 -0
  90. package/dist/auth/template-engine.js +225 -0
  91. package/dist/auth/template-engine.js.map +1 -0
  92. package/dist/auth/token-repository.d.ts +238 -0
  93. package/dist/auth/token-repository.d.ts.map +1 -0
  94. package/dist/auth/token-repository.js +475 -0
  95. package/dist/auth/token-repository.js.map +1 -0
  96. package/dist/auth/tokens.d.ts +45 -0
  97. package/dist/auth/tokens.d.ts.map +1 -0
  98. package/dist/auth/tokens.js +51 -0
  99. package/dist/auth/tokens.js.map +1 -0
  100. package/dist/cli/bootstrap.d.ts +55 -0
  101. package/dist/cli/bootstrap.d.ts.map +1 -0
  102. package/dist/cli/bootstrap.js +90 -0
  103. package/dist/cli/bootstrap.js.map +1 -0
  104. package/dist/cli/commands/health.d.ts +20 -0
  105. package/dist/cli/commands/health.d.ts.map +1 -0
  106. package/dist/cli/commands/health.js +80 -0
  107. package/dist/cli/commands/health.js.map +1 -0
  108. package/dist/cli/commands/init.d.ts +48 -0
  109. package/dist/cli/commands/init.d.ts.map +1 -0
  110. package/dist/cli/commands/init.js +349 -0
  111. package/dist/cli/commands/init.js.map +1 -0
  112. package/dist/cli/commands/migrate.d.ts +19 -0
  113. package/dist/cli/commands/migrate.d.ts.map +1 -0
  114. package/dist/cli/commands/migrate.js +88 -0
  115. package/dist/cli/commands/migrate.js.map +1 -0
  116. package/dist/cli/commands/seed.d.ts +19 -0
  117. package/dist/cli/commands/seed.d.ts.map +1 -0
  118. package/dist/cli/commands/seed.js +71 -0
  119. package/dist/cli/commands/seed.js.map +1 -0
  120. package/dist/cli/commands/user-2fa.d.ts +29 -0
  121. package/dist/cli/commands/user-2fa.d.ts.map +1 -0
  122. package/dist/cli/commands/user-2fa.js +113 -0
  123. package/dist/cli/commands/user-2fa.js.map +1 -0
  124. package/dist/cli/error-handler.d.ts +31 -0
  125. package/dist/cli/error-handler.d.ts.map +1 -0
  126. package/dist/cli/error-handler.js +65 -0
  127. package/dist/cli/error-handler.js.map +1 -0
  128. package/dist/cli/index.d.ts +48 -0
  129. package/dist/cli/index.d.ts.map +1 -0
  130. package/dist/cli/index.js +99 -0
  131. package/dist/cli/index.js.map +1 -0
  132. package/dist/cli/output.d.ts +94 -0
  133. package/dist/cli/output.d.ts.map +1 -0
  134. package/dist/cli/output.js +124 -0
  135. package/dist/cli/output.js.map +1 -0
  136. package/dist/cli/prompt.d.ts +48 -0
  137. package/dist/cli/prompt.d.ts.map +1 -0
  138. package/dist/cli/prompt.js +96 -0
  139. package/dist/cli/prompt.js.map +1 -0
  140. package/dist/clients/cache.d.ts +63 -0
  141. package/dist/clients/cache.d.ts.map +1 -0
  142. package/dist/clients/cache.js +160 -0
  143. package/dist/clients/cache.js.map +1 -0
  144. package/dist/clients/crypto.d.ts +69 -0
  145. package/dist/clients/crypto.d.ts.map +1 -0
  146. package/dist/clients/crypto.js +83 -0
  147. package/dist/clients/crypto.js.map +1 -0
  148. package/dist/clients/errors.d.ts +27 -0
  149. package/dist/clients/errors.d.ts.map +1 -0
  150. package/dist/clients/errors.js +33 -0
  151. package/dist/clients/errors.js.map +1 -0
  152. package/dist/clients/index.d.ts +19 -0
  153. package/dist/clients/index.d.ts.map +1 -0
  154. package/dist/clients/index.js +23 -0
  155. package/dist/clients/index.js.map +1 -0
  156. package/dist/clients/repository.d.ts +161 -0
  157. package/dist/clients/repository.d.ts.map +1 -0
  158. package/dist/clients/repository.js +318 -0
  159. package/dist/clients/repository.js.map +1 -0
  160. package/dist/clients/resolve-login-methods.d.ts +74 -0
  161. package/dist/clients/resolve-login-methods.d.ts.map +1 -0
  162. package/dist/clients/resolve-login-methods.js +68 -0
  163. package/dist/clients/resolve-login-methods.js.map +1 -0
  164. package/dist/clients/secret-repository.d.ts +109 -0
  165. package/dist/clients/secret-repository.d.ts.map +1 -0
  166. package/dist/clients/secret-repository.js +166 -0
  167. package/dist/clients/secret-repository.js.map +1 -0
  168. package/dist/clients/secret-service.d.ts +87 -0
  169. package/dist/clients/secret-service.d.ts.map +1 -0
  170. package/dist/clients/secret-service.js +204 -0
  171. package/dist/clients/secret-service.js.map +1 -0
  172. package/dist/clients/service.d.ts +158 -0
  173. package/dist/clients/service.d.ts.map +1 -0
  174. package/dist/clients/service.js +523 -0
  175. package/dist/clients/service.js.map +1 -0
  176. package/dist/clients/types.d.ts +214 -0
  177. package/dist/clients/types.d.ts.map +1 -0
  178. package/dist/clients/types.js +77 -0
  179. package/dist/clients/types.js.map +1 -0
  180. package/dist/clients/validators.d.ts +87 -0
  181. package/dist/clients/validators.d.ts.map +1 -0
  182. package/dist/clients/validators.js +164 -0
  183. package/dist/clients/validators.js.map +1 -0
  184. package/dist/config/index.d.ts +23 -0
  185. package/dist/config/index.d.ts.map +1 -0
  186. package/dist/config/index.js +52 -0
  187. package/dist/config/index.js.map +1 -0
  188. package/dist/config/schema.d.ts +35 -0
  189. package/dist/config/schema.d.ts.map +1 -0
  190. package/dist/config/schema.js +167 -0
  191. package/dist/config/schema.js.map +1 -0
  192. package/dist/custom-claims/cache.d.ts +48 -0
  193. package/dist/custom-claims/cache.d.ts.map +1 -0
  194. package/dist/custom-claims/cache.js +122 -0
  195. package/dist/custom-claims/cache.js.map +1 -0
  196. package/dist/custom-claims/errors.d.ts +25 -0
  197. package/dist/custom-claims/errors.d.ts.map +1 -0
  198. package/dist/custom-claims/errors.js +31 -0
  199. package/dist/custom-claims/errors.js.map +1 -0
  200. package/dist/custom-claims/index.d.ts +14 -0
  201. package/dist/custom-claims/index.d.ts.map +1 -0
  202. package/dist/custom-claims/index.js +17 -0
  203. package/dist/custom-claims/index.js.map +1 -0
  204. package/dist/custom-claims/repository.d.ts +147 -0
  205. package/dist/custom-claims/repository.d.ts.map +1 -0
  206. package/dist/custom-claims/repository.js +338 -0
  207. package/dist/custom-claims/repository.js.map +1 -0
  208. package/dist/custom-claims/service.d.ts +129 -0
  209. package/dist/custom-claims/service.d.ts.map +1 -0
  210. package/dist/custom-claims/service.js +296 -0
  211. package/dist/custom-claims/service.js.map +1 -0
  212. package/dist/custom-claims/types.d.ts +132 -0
  213. package/dist/custom-claims/types.d.ts.map +1 -0
  214. package/dist/custom-claims/types.js +61 -0
  215. package/dist/custom-claims/types.js.map +1 -0
  216. package/dist/custom-claims/validators.d.ts +61 -0
  217. package/dist/custom-claims/validators.d.ts.map +1 -0
  218. package/dist/custom-claims/validators.js +136 -0
  219. package/dist/custom-claims/validators.js.map +1 -0
  220. package/dist/index.d.ts +14 -0
  221. package/dist/index.d.ts.map +1 -0
  222. package/dist/index.js +91 -0
  223. package/dist/index.js.map +1 -0
  224. package/dist/lib/admin-permissions.d.ts +147 -0
  225. package/dist/lib/admin-permissions.d.ts.map +1 -0
  226. package/dist/lib/admin-permissions.js +261 -0
  227. package/dist/lib/admin-permissions.js.map +1 -0
  228. package/dist/lib/audit-log.d.ts +45 -0
  229. package/dist/lib/audit-log.d.ts.map +1 -0
  230. package/dist/lib/audit-log.js +79 -0
  231. package/dist/lib/audit-log.js.map +1 -0
  232. package/dist/lib/branding-assets.d.ts +47 -0
  233. package/dist/lib/branding-assets.d.ts.map +1 -0
  234. package/dist/lib/branding-assets.js +93 -0
  235. package/dist/lib/branding-assets.js.map +1 -0
  236. package/dist/lib/bulk-operations.d.ts +54 -0
  237. package/dist/lib/bulk-operations.d.ts.map +1 -0
  238. package/dist/lib/bulk-operations.js +201 -0
  239. package/dist/lib/bulk-operations.js.map +1 -0
  240. package/dist/lib/cursor.d.ts +110 -0
  241. package/dist/lib/cursor.d.ts.map +1 -0
  242. package/dist/lib/cursor.js +115 -0
  243. package/dist/lib/cursor.js.map +1 -0
  244. package/dist/lib/data-export.d.ts +67 -0
  245. package/dist/lib/data-export.d.ts.map +1 -0
  246. package/dist/lib/data-export.js +272 -0
  247. package/dist/lib/data-export.js.map +1 -0
  248. package/dist/lib/data-import-plan.d.ts +50 -0
  249. package/dist/lib/data-import-plan.d.ts.map +1 -0
  250. package/dist/lib/data-import-plan.js +235 -0
  251. package/dist/lib/data-import-plan.js.map +1 -0
  252. package/dist/lib/data-import.d.ts +276 -0
  253. package/dist/lib/data-import.d.ts.map +1 -0
  254. package/dist/lib/data-import.js +1694 -0
  255. package/dist/lib/data-import.js.map +1 -0
  256. package/dist/lib/database.d.ts +22 -0
  257. package/dist/lib/database.d.ts.map +1 -0
  258. package/dist/lib/database.js +103 -0
  259. package/dist/lib/database.js.map +1 -0
  260. package/dist/lib/entity-history.d.ts +52 -0
  261. package/dist/lib/entity-history.d.ts.map +1 -0
  262. package/dist/lib/entity-history.js +121 -0
  263. package/dist/lib/entity-history.js.map +1 -0
  264. package/dist/lib/etag.d.ts +92 -0
  265. package/dist/lib/etag.d.ts.map +1 -0
  266. package/dist/lib/etag.js +155 -0
  267. package/dist/lib/etag.js.map +1 -0
  268. package/dist/lib/image-validator.d.ts +44 -0
  269. package/dist/lib/image-validator.d.ts.map +1 -0
  270. package/dist/lib/image-validator.js +204 -0
  271. package/dist/lib/image-validator.js.map +1 -0
  272. package/dist/lib/logger.d.ts +15 -0
  273. package/dist/lib/logger.d.ts.map +1 -0
  274. package/dist/lib/logger.js +84 -0
  275. package/dist/lib/logger.js.map +1 -0
  276. package/dist/lib/migrator.d.ts +14 -0
  277. package/dist/lib/migrator.d.ts.map +1 -0
  278. package/dist/lib/migrator.js +34 -0
  279. package/dist/lib/migrator.js.map +1 -0
  280. package/dist/lib/redis.d.ts +5 -0
  281. package/dist/lib/redis.d.ts.map +1 -0
  282. package/dist/lib/redis.js +29 -0
  283. package/dist/lib/redis.js.map +1 -0
  284. package/dist/lib/runtime-paths.d.ts +38 -0
  285. package/dist/lib/runtime-paths.d.ts.map +1 -0
  286. package/dist/lib/runtime-paths.js +50 -0
  287. package/dist/lib/runtime-paths.js.map +1 -0
  288. package/dist/lib/session-tracking.d.ts +81 -0
  289. package/dist/lib/session-tracking.d.ts.map +1 -0
  290. package/dist/lib/session-tracking.js +145 -0
  291. package/dist/lib/session-tracking.js.map +1 -0
  292. package/dist/lib/signing-key-crypto.d.ts +53 -0
  293. package/dist/lib/signing-key-crypto.d.ts.map +1 -0
  294. package/dist/lib/signing-key-crypto.js +108 -0
  295. package/dist/lib/signing-key-crypto.js.map +1 -0
  296. package/dist/lib/signing-keys.d.ts +141 -0
  297. package/dist/lib/signing-keys.d.ts.map +1 -0
  298. package/dist/lib/signing-keys.js +206 -0
  299. package/dist/lib/signing-keys.js.map +1 -0
  300. package/dist/lib/stats.d.ts +83 -0
  301. package/dist/lib/stats.d.ts.map +1 -0
  302. package/dist/lib/stats.js +187 -0
  303. package/dist/lib/stats.js.map +1 -0
  304. package/dist/lib/super-admin-protection.d.ts +69 -0
  305. package/dist/lib/super-admin-protection.d.ts.map +1 -0
  306. package/dist/lib/super-admin-protection.js +102 -0
  307. package/dist/lib/super-admin-protection.js.map +1 -0
  308. package/dist/lib/system-config.d.ts +79 -0
  309. package/dist/lib/system-config.d.ts.map +1 -0
  310. package/dist/lib/system-config.js +159 -0
  311. package/dist/lib/system-config.js.map +1 -0
  312. package/dist/middleware/admin-auth.d.ts +100 -0
  313. package/dist/middleware/admin-auth.d.ts.map +1 -0
  314. package/dist/middleware/admin-auth.js +241 -0
  315. package/dist/middleware/admin-auth.js.map +1 -0
  316. package/dist/middleware/admin-cors.d.ts +41 -0
  317. package/dist/middleware/admin-cors.d.ts.map +1 -0
  318. package/dist/middleware/admin-cors.js +83 -0
  319. package/dist/middleware/admin-cors.js.map +1 -0
  320. package/dist/middleware/admin-mutation-audit.d.ts +9 -0
  321. package/dist/middleware/admin-mutation-audit.d.ts.map +1 -0
  322. package/dist/middleware/admin-mutation-audit.js +76 -0
  323. package/dist/middleware/admin-mutation-audit.js.map +1 -0
  324. package/dist/middleware/admin-rate-limiter.d.ts +56 -0
  325. package/dist/middleware/admin-rate-limiter.d.ts.map +1 -0
  326. package/dist/middleware/admin-rate-limiter.js +97 -0
  327. package/dist/middleware/admin-rate-limiter.js.map +1 -0
  328. package/dist/middleware/client-secret-hash.d.ts +34 -0
  329. package/dist/middleware/client-secret-hash.d.ts.map +1 -0
  330. package/dist/middleware/client-secret-hash.js +74 -0
  331. package/dist/middleware/client-secret-hash.js.map +1 -0
  332. package/dist/middleware/error-handler.d.ts +3 -0
  333. package/dist/middleware/error-handler.d.ts.map +1 -0
  334. package/dist/middleware/error-handler.js +93 -0
  335. package/dist/middleware/error-handler.js.map +1 -0
  336. package/dist/middleware/health.d.ts +3 -0
  337. package/dist/middleware/health.d.ts.map +1 -0
  338. package/dist/middleware/health.js +35 -0
  339. package/dist/middleware/health.js.map +1 -0
  340. package/dist/middleware/metrics.d.ts +40 -0
  341. package/dist/middleware/metrics.d.ts.map +1 -0
  342. package/dist/middleware/metrics.js +75 -0
  343. package/dist/middleware/metrics.js.map +1 -0
  344. package/dist/middleware/oidc-client-tenant.d.ts +37 -0
  345. package/dist/middleware/oidc-client-tenant.d.ts.map +1 -0
  346. package/dist/middleware/oidc-client-tenant.js +156 -0
  347. package/dist/middleware/oidc-client-tenant.js.map +1 -0
  348. package/dist/middleware/oidc-cors.d.ts +33 -0
  349. package/dist/middleware/oidc-cors.d.ts.map +1 -0
  350. package/dist/middleware/oidc-cors.js +68 -0
  351. package/dist/middleware/oidc-cors.js.map +1 -0
  352. package/dist/middleware/oidc-preflight-cors.d.ts +54 -0
  353. package/dist/middleware/oidc-preflight-cors.d.ts.map +1 -0
  354. package/dist/middleware/oidc-preflight-cors.js +267 -0
  355. package/dist/middleware/oidc-preflight-cors.js.map +1 -0
  356. package/dist/middleware/prompt-login-reset.d.ts +103 -0
  357. package/dist/middleware/prompt-login-reset.d.ts.map +1 -0
  358. package/dist/middleware/prompt-login-reset.js +204 -0
  359. package/dist/middleware/prompt-login-reset.js.map +1 -0
  360. package/dist/middleware/ready.d.ts +23 -0
  361. package/dist/middleware/ready.d.ts.map +1 -0
  362. package/dist/middleware/ready.js +60 -0
  363. package/dist/middleware/ready.js.map +1 -0
  364. package/dist/middleware/request-logger.d.ts +27 -0
  365. package/dist/middleware/request-logger.d.ts.map +1 -0
  366. package/dist/middleware/request-logger.js +46 -0
  367. package/dist/middleware/request-logger.js.map +1 -0
  368. package/dist/middleware/require-permission.d.ts +28 -0
  369. package/dist/middleware/require-permission.d.ts.map +1 -0
  370. package/dist/middleware/require-permission.js +63 -0
  371. package/dist/middleware/require-permission.js.map +1 -0
  372. package/dist/middleware/require-user-organization.d.ts +18 -0
  373. package/dist/middleware/require-user-organization.d.ts.map +1 -0
  374. package/dist/middleware/require-user-organization.js +53 -0
  375. package/dist/middleware/require-user-organization.js.map +1 -0
  376. package/dist/middleware/root-page.d.ts +62 -0
  377. package/dist/middleware/root-page.d.ts.map +1 -0
  378. package/dist/middleware/root-page.js +134 -0
  379. package/dist/middleware/root-page.js.map +1 -0
  380. package/dist/middleware/security-headers.d.ts +98 -0
  381. package/dist/middleware/security-headers.d.ts.map +1 -0
  382. package/dist/middleware/security-headers.js +159 -0
  383. package/dist/middleware/security-headers.js.map +1 -0
  384. package/dist/middleware/tenant-resolver.d.ts +37 -0
  385. package/dist/middleware/tenant-resolver.d.ts.map +1 -0
  386. package/dist/middleware/tenant-resolver.js +71 -0
  387. package/dist/middleware/tenant-resolver.js.map +1 -0
  388. package/dist/middleware/token-rate-limiter.d.ts +89 -0
  389. package/dist/middleware/token-rate-limiter.d.ts.map +1 -0
  390. package/dist/middleware/token-rate-limiter.js +189 -0
  391. package/dist/middleware/token-rate-limiter.js.map +1 -0
  392. package/dist/oidc/account-finder.d.ts +52 -0
  393. package/dist/oidc/account-finder.d.ts.map +1 -0
  394. package/dist/oidc/account-finder.js +134 -0
  395. package/dist/oidc/account-finder.js.map +1 -0
  396. package/dist/oidc/adapter-factory.d.ts +90 -0
  397. package/dist/oidc/adapter-factory.d.ts.map +1 -0
  398. package/dist/oidc/adapter-factory.js +165 -0
  399. package/dist/oidc/adapter-factory.js.map +1 -0
  400. package/dist/oidc/configuration.d.ts +155 -0
  401. package/dist/oidc/configuration.d.ts.map +1 -0
  402. package/dist/oidc/configuration.js +531 -0
  403. package/dist/oidc/configuration.js.map +1 -0
  404. package/dist/oidc/postgres-adapter.d.ts +159 -0
  405. package/dist/oidc/postgres-adapter.d.ts.map +1 -0
  406. package/dist/oidc/postgres-adapter.js +222 -0
  407. package/dist/oidc/postgres-adapter.js.map +1 -0
  408. package/dist/oidc/protocol-security-observer.d.ts +38 -0
  409. package/dist/oidc/protocol-security-observer.d.ts.map +1 -0
  410. package/dist/oidc/protocol-security-observer.js +93 -0
  411. package/dist/oidc/protocol-security-observer.js.map +1 -0
  412. package/dist/oidc/provider.d.ts +37 -0
  413. package/dist/oidc/provider.d.ts.map +1 -0
  414. package/dist/oidc/provider.js +71 -0
  415. package/dist/oidc/provider.js.map +1 -0
  416. package/dist/oidc/redis-adapter.d.ts +140 -0
  417. package/dist/oidc/redis-adapter.d.ts.map +1 -0
  418. package/dist/oidc/redis-adapter.js +344 -0
  419. package/dist/oidc/redis-adapter.js.map +1 -0
  420. package/dist/organizations/cache.d.ts +60 -0
  421. package/dist/organizations/cache.d.ts.map +1 -0
  422. package/dist/organizations/cache.js +157 -0
  423. package/dist/organizations/cache.js.map +1 -0
  424. package/dist/organizations/errors.d.ts +25 -0
  425. package/dist/organizations/errors.d.ts.map +1 -0
  426. package/dist/organizations/errors.js +31 -0
  427. package/dist/organizations/errors.js.map +1 -0
  428. package/dist/organizations/index.d.ts +15 -0
  429. package/dist/organizations/index.d.ts.map +1 -0
  430. package/dist/organizations/index.js +15 -0
  431. package/dist/organizations/index.js.map +1 -0
  432. package/dist/organizations/repository.d.ts +183 -0
  433. package/dist/organizations/repository.d.ts.map +1 -0
  434. package/dist/organizations/repository.js +354 -0
  435. package/dist/organizations/repository.js.map +1 -0
  436. package/dist/organizations/service.d.ts +168 -0
  437. package/dist/organizations/service.d.ts.map +1 -0
  438. package/dist/organizations/service.js +511 -0
  439. package/dist/organizations/service.js.map +1 -0
  440. package/dist/organizations/slugs.d.ts +57 -0
  441. package/dist/organizations/slugs.d.ts.map +1 -0
  442. package/dist/organizations/slugs.js +130 -0
  443. package/dist/organizations/slugs.js.map +1 -0
  444. package/dist/organizations/types.d.ts +146 -0
  445. package/dist/organizations/types.d.ts.map +1 -0
  446. package/dist/organizations/types.js +49 -0
  447. package/dist/organizations/types.js.map +1 -0
  448. package/dist/rbac/cache.d.ts +110 -0
  449. package/dist/rbac/cache.d.ts.map +1 -0
  450. package/dist/rbac/cache.js +271 -0
  451. package/dist/rbac/cache.js.map +1 -0
  452. package/dist/rbac/errors.d.ts +34 -0
  453. package/dist/rbac/errors.d.ts.map +1 -0
  454. package/dist/rbac/errors.js +43 -0
  455. package/dist/rbac/errors.js.map +1 -0
  456. package/dist/rbac/index.d.ts +17 -0
  457. package/dist/rbac/index.d.ts.map +1 -0
  458. package/dist/rbac/index.js +21 -0
  459. package/dist/rbac/index.js.map +1 -0
  460. package/dist/rbac/mapping-repository.d.ts +121 -0
  461. package/dist/rbac/mapping-repository.d.ts.map +1 -0
  462. package/dist/rbac/mapping-repository.js +224 -0
  463. package/dist/rbac/mapping-repository.js.map +1 -0
  464. package/dist/rbac/permission-repository.d.ts +100 -0
  465. package/dist/rbac/permission-repository.d.ts.map +1 -0
  466. package/dist/rbac/permission-repository.js +190 -0
  467. package/dist/rbac/permission-repository.js.map +1 -0
  468. package/dist/rbac/permission-service.d.ts +85 -0
  469. package/dist/rbac/permission-service.d.ts.map +1 -0
  470. package/dist/rbac/permission-service.js +179 -0
  471. package/dist/rbac/permission-service.js.map +1 -0
  472. package/dist/rbac/role-repository.d.ts +104 -0
  473. package/dist/rbac/role-repository.d.ts.map +1 -0
  474. package/dist/rbac/role-repository.js +202 -0
  475. package/dist/rbac/role-repository.js.map +1 -0
  476. package/dist/rbac/role-service.d.ts +111 -0
  477. package/dist/rbac/role-service.d.ts.map +1 -0
  478. package/dist/rbac/role-service.js +256 -0
  479. package/dist/rbac/role-service.js.map +1 -0
  480. package/dist/rbac/slugs.d.ts +116 -0
  481. package/dist/rbac/slugs.d.ts.map +1 -0
  482. package/dist/rbac/slugs.js +178 -0
  483. package/dist/rbac/slugs.js.map +1 -0
  484. package/dist/rbac/types.d.ts +187 -0
  485. package/dist/rbac/types.d.ts.map +1 -0
  486. package/dist/rbac/types.js +75 -0
  487. package/dist/rbac/types.js.map +1 -0
  488. package/dist/rbac/user-role-service.d.ts +101 -0
  489. package/dist/rbac/user-role-service.d.ts.map +1 -0
  490. package/dist/rbac/user-role-service.js +166 -0
  491. package/dist/rbac/user-role-service.js.map +1 -0
  492. package/dist/routes/applications.d.ts +40 -0
  493. package/dist/routes/applications.d.ts.map +1 -0
  494. package/dist/routes/applications.js +284 -0
  495. package/dist/routes/applications.js.map +1 -0
  496. package/dist/routes/audit.d.ts +31 -0
  497. package/dist/routes/audit.d.ts.map +1 -0
  498. package/dist/routes/audit.js +140 -0
  499. package/dist/routes/audit.js.map +1 -0
  500. package/dist/routes/branding.d.ts +17 -0
  501. package/dist/routes/branding.d.ts.map +1 -0
  502. package/dist/routes/branding.js +104 -0
  503. package/dist/routes/branding.js.map +1 -0
  504. package/dist/routes/bulk.d.ts +37 -0
  505. package/dist/routes/bulk.d.ts.map +1 -0
  506. package/dist/routes/bulk.js +94 -0
  507. package/dist/routes/bulk.js.map +1 -0
  508. package/dist/routes/clients.d.ts +44 -0
  509. package/dist/routes/clients.d.ts.map +1 -0
  510. package/dist/routes/clients.js +353 -0
  511. package/dist/routes/clients.js.map +1 -0
  512. package/dist/routes/config.d.ts +35 -0
  513. package/dist/routes/config.d.ts.map +1 -0
  514. package/dist/routes/config.js +115 -0
  515. package/dist/routes/config.js.map +1 -0
  516. package/dist/routes/custom-claims.d.ts +38 -0
  517. package/dist/routes/custom-claims.d.ts.map +1 -0
  518. package/dist/routes/custom-claims.js +208 -0
  519. package/dist/routes/custom-claims.js.map +1 -0
  520. package/dist/routes/exports.d.ts +21 -0
  521. package/dist/routes/exports.d.ts.map +1 -0
  522. package/dist/routes/exports.js +98 -0
  523. package/dist/routes/exports.js.map +1 -0
  524. package/dist/routes/imports.d.ts +18 -0
  525. package/dist/routes/imports.d.ts.map +1 -0
  526. package/dist/routes/imports.js +72 -0
  527. package/dist/routes/imports.js.map +1 -0
  528. package/dist/routes/interactions.d.ts +111 -0
  529. package/dist/routes/interactions.d.ts.map +1 -0
  530. package/dist/routes/interactions.js +1074 -0
  531. package/dist/routes/interactions.js.map +1 -0
  532. package/dist/routes/invitation.d.ts +31 -0
  533. package/dist/routes/invitation.d.ts.map +1 -0
  534. package/dist/routes/invitation.js +342 -0
  535. package/dist/routes/invitation.js.map +1 -0
  536. package/dist/routes/keys.d.ts +28 -0
  537. package/dist/routes/keys.d.ts.map +1 -0
  538. package/dist/routes/keys.js +91 -0
  539. package/dist/routes/keys.js.map +1 -0
  540. package/dist/routes/magic-link.d.ts +43 -0
  541. package/dist/routes/magic-link.d.ts.map +1 -0
  542. package/dist/routes/magic-link.js +264 -0
  543. package/dist/routes/magic-link.js.map +1 -0
  544. package/dist/routes/organizations.d.ts +38 -0
  545. package/dist/routes/organizations.d.ts.map +1 -0
  546. package/dist/routes/organizations.js +347 -0
  547. package/dist/routes/organizations.js.map +1 -0
  548. package/dist/routes/password-reset.d.ts +65 -0
  549. package/dist/routes/password-reset.d.ts.map +1 -0
  550. package/dist/routes/password-reset.js +493 -0
  551. package/dist/routes/password-reset.js.map +1 -0
  552. package/dist/routes/permissions.d.ts +33 -0
  553. package/dist/routes/permissions.d.ts.map +1 -0
  554. package/dist/routes/permissions.js +166 -0
  555. package/dist/routes/permissions.js.map +1 -0
  556. package/dist/routes/roles.d.ts +37 -0
  557. package/dist/routes/roles.d.ts.map +1 -0
  558. package/dist/routes/roles.js +222 -0
  559. package/dist/routes/roles.js.map +1 -0
  560. package/dist/routes/sessions.d.ts +37 -0
  561. package/dist/routes/sessions.d.ts.map +1 -0
  562. package/dist/routes/sessions.js +121 -0
  563. package/dist/routes/sessions.js.map +1 -0
  564. package/dist/routes/stats.d.ts +28 -0
  565. package/dist/routes/stats.d.ts.map +1 -0
  566. package/dist/routes/stats.js +65 -0
  567. package/dist/routes/stats.js.map +1 -0
  568. package/dist/routes/two-factor-admin.d.ts +54 -0
  569. package/dist/routes/two-factor-admin.d.ts.map +1 -0
  570. package/dist/routes/two-factor-admin.js +344 -0
  571. package/dist/routes/two-factor-admin.js.map +1 -0
  572. package/dist/routes/two-factor.d.ts +31 -0
  573. package/dist/routes/two-factor.d.ts.map +1 -0
  574. package/dist/routes/two-factor.js +595 -0
  575. package/dist/routes/two-factor.js.map +1 -0
  576. package/dist/routes/user-roles.d.ts +33 -0
  577. package/dist/routes/user-roles.d.ts.map +1 -0
  578. package/dist/routes/user-roles.js +129 -0
  579. package/dist/routes/user-roles.js.map +1 -0
  580. package/dist/routes/users.d.ts +61 -0
  581. package/dist/routes/users.d.ts.map +1 -0
  582. package/dist/routes/users.js +868 -0
  583. package/dist/routes/users.js.map +1 -0
  584. package/dist/security/decision-context.d.ts +52 -0
  585. package/dist/security/decision-context.d.ts.map +1 -0
  586. package/dist/security/decision-context.js +150 -0
  587. package/dist/security/decision-context.js.map +1 -0
  588. package/dist/security/decision-event.d.ts +128 -0
  589. package/dist/security/decision-event.d.ts.map +1 -0
  590. package/dist/security/decision-event.js +225 -0
  591. package/dist/security/decision-event.js.map +1 -0
  592. package/dist/security/transport-decision.d.ts +6 -0
  593. package/dist/security/transport-decision.d.ts.map +1 -0
  594. package/dist/security/transport-decision.js +37 -0
  595. package/dist/security/transport-decision.js.map +1 -0
  596. package/dist/server.d.ts +50 -0
  597. package/dist/server.d.ts.map +1 -0
  598. package/dist/server.js +491 -0
  599. package/dist/server.js.map +1 -0
  600. package/dist/two-factor/cache.d.ts +47 -0
  601. package/dist/two-factor/cache.d.ts.map +1 -0
  602. package/dist/two-factor/cache.js +122 -0
  603. package/dist/two-factor/cache.js.map +1 -0
  604. package/dist/two-factor/crypto.d.ts +41 -0
  605. package/dist/two-factor/crypto.d.ts.map +1 -0
  606. package/dist/two-factor/crypto.js +94 -0
  607. package/dist/two-factor/crypto.js.map +1 -0
  608. package/dist/two-factor/errors.d.ts +82 -0
  609. package/dist/two-factor/errors.d.ts.map +1 -0
  610. package/dist/two-factor/errors.js +112 -0
  611. package/dist/two-factor/errors.js.map +1 -0
  612. package/dist/two-factor/index.d.ts +18 -0
  613. package/dist/two-factor/index.d.ts.map +1 -0
  614. package/dist/two-factor/index.js +25 -0
  615. package/dist/two-factor/index.js.map +1 -0
  616. package/dist/two-factor/otp.d.ts +43 -0
  617. package/dist/two-factor/otp.d.ts.map +1 -0
  618. package/dist/two-factor/otp.js +57 -0
  619. package/dist/two-factor/otp.js.map +1 -0
  620. package/dist/two-factor/recovery.d.ts +45 -0
  621. package/dist/two-factor/recovery.d.ts.map +1 -0
  622. package/dist/two-factor/recovery.js +104 -0
  623. package/dist/two-factor/recovery.js.map +1 -0
  624. package/dist/two-factor/repository.d.ts +156 -0
  625. package/dist/two-factor/repository.d.ts.map +1 -0
  626. package/dist/two-factor/repository.js +251 -0
  627. package/dist/two-factor/repository.js.map +1 -0
  628. package/dist/two-factor/service.d.ts +232 -0
  629. package/dist/two-factor/service.d.ts.map +1 -0
  630. package/dist/two-factor/service.js +599 -0
  631. package/dist/two-factor/service.js.map +1 -0
  632. package/dist/two-factor/totp.d.ts +57 -0
  633. package/dist/two-factor/totp.d.ts.map +1 -0
  634. package/dist/two-factor/totp.js +96 -0
  635. package/dist/two-factor/totp.js.map +1 -0
  636. package/dist/two-factor/types.d.ts +152 -0
  637. package/dist/two-factor/types.d.ts.map +1 -0
  638. package/dist/two-factor/types.js +64 -0
  639. package/dist/two-factor/types.js.map +1 -0
  640. package/dist/users/cache.d.ts +49 -0
  641. package/dist/users/cache.d.ts.map +1 -0
  642. package/dist/users/cache.js +140 -0
  643. package/dist/users/cache.js.map +1 -0
  644. package/dist/users/claims.d.ts +67 -0
  645. package/dist/users/claims.d.ts.map +1 -0
  646. package/dist/users/claims.js +104 -0
  647. package/dist/users/claims.js.map +1 -0
  648. package/dist/users/errors.d.ts +25 -0
  649. package/dist/users/errors.d.ts.map +1 -0
  650. package/dist/users/errors.js +31 -0
  651. package/dist/users/errors.js.map +1 -0
  652. package/dist/users/gdpr.d.ts +110 -0
  653. package/dist/users/gdpr.d.ts.map +1 -0
  654. package/dist/users/gdpr.js +211 -0
  655. package/dist/users/gdpr.js.map +1 -0
  656. package/dist/users/index.d.ts +20 -0
  657. package/dist/users/index.d.ts.map +1 -0
  658. package/dist/users/index.js +19 -0
  659. package/dist/users/index.js.map +1 -0
  660. package/dist/users/password.d.ts +85 -0
  661. package/dist/users/password.d.ts.map +1 -0
  662. package/dist/users/password.js +138 -0
  663. package/dist/users/password.js.map +1 -0
  664. package/dist/users/repository.d.ts +263 -0
  665. package/dist/users/repository.d.ts.map +1 -0
  666. package/dist/users/repository.js +499 -0
  667. package/dist/users/repository.js.map +1 -0
  668. package/dist/users/service.d.ts +299 -0
  669. package/dist/users/service.d.ts.map +1 -0
  670. package/dist/users/service.js +698 -0
  671. package/dist/users/service.js.map +1 -0
  672. package/dist/users/types.d.ts +220 -0
  673. package/dist/users/types.d.ts.map +1 -0
  674. package/dist/users/types.js +77 -0
  675. package/dist/users/types.js.map +1 -0
  676. package/locales/default/en/common.json +10 -0
  677. package/locales/default/en/consent.json +13 -0
  678. package/locales/default/en/emails.json +17 -0
  679. package/locales/default/en/errors.json +21 -0
  680. package/locales/default/en/forgot-password.json +11 -0
  681. package/locales/default/en/invitation.json +18 -0
  682. package/locales/default/en/login.json +17 -0
  683. package/locales/default/en/logout.json +9 -0
  684. package/locales/default/en/magic-link.json +12 -0
  685. package/locales/default/en/reset-password.json +16 -0
  686. package/locales/default/en/two-factor.json +29 -0
  687. package/migrations/.gitkeep +0 -0
  688. package/migrations/001_extensions.sql +22 -0
  689. package/migrations/002_organizations.sql +43 -0
  690. package/migrations/003_applications.sql +50 -0
  691. package/migrations/004_clients.sql +74 -0
  692. package/migrations/005_users.sql +119 -0
  693. package/migrations/006_roles_permissions.sql +80 -0
  694. package/migrations/007_custom_claims.sql +55 -0
  695. package/migrations/008_config.sql +51 -0
  696. package/migrations/009_audit_log.sql +31 -0
  697. package/migrations/010_oidc_adapter.sql +34 -0
  698. package/migrations/011_seed.sql +53 -0
  699. package/migrations/012_two_factor.sql +88 -0
  700. package/migrations/013_client_secret_sha256.sql +22 -0
  701. package/migrations/014_login_methods.sql +34 -0
  702. package/migrations/015_signing_key_encryption.sql +20 -0
  703. package/migrations/016_failed_login_count.sql +27 -0
  704. package/migrations/017_audit_retention.sql +11 -0
  705. package/migrations/018_admin_api_enhancements.sql +78 -0
  706. package/migrations/019_invitation_details.sql +27 -0
  707. package/migrations/020_two_factor_admin_permission.sql +108 -0
  708. package/migrations/021_auth_recovery_jobs.sql +74 -0
  709. package/migrations/022_recovery_artifact_ownership.sql +25 -0
  710. package/migrations/023_magic_link_authority.sql +39 -0
  711. package/package.json +106 -0
  712. package/templates/default/emails/invitation.hbs +39 -0
  713. package/templates/default/emails/invitation.txt.hbs +18 -0
  714. package/templates/default/emails/magic-link.hbs +30 -0
  715. package/templates/default/emails/magic-link.txt.hbs +11 -0
  716. package/templates/default/emails/otp-code.hbs +31 -0
  717. package/templates/default/emails/otp-code.txt.hbs +15 -0
  718. package/templates/default/emails/password-changed.hbs +24 -0
  719. package/templates/default/emails/password-changed.txt.hbs +7 -0
  720. package/templates/default/emails/password-reset.hbs +30 -0
  721. package/templates/default/emails/password-reset.txt.hbs +11 -0
  722. package/templates/default/emails/welcome.hbs +25 -0
  723. package/templates/default/emails/welcome.txt.hbs +9 -0
  724. package/templates/default/layouts/main.hbs +49 -0
  725. package/templates/default/pages/accept-invite.hbs +25 -0
  726. package/templates/default/pages/consent.hbs +27 -0
  727. package/templates/default/pages/error.hbs +15 -0
  728. package/templates/default/pages/forgot-password.hbs +21 -0
  729. package/templates/default/pages/invite-expired.hbs +6 -0
  730. package/templates/default/pages/invite-success.hbs +9 -0
  731. package/templates/default/pages/login.hbs +108 -0
  732. package/templates/default/pages/logout-success.hbs +5 -0
  733. package/templates/default/pages/logout.hbs +24 -0
  734. package/templates/default/pages/magic-link-sent.hbs +10 -0
  735. package/templates/default/pages/magic-link-success.hbs +17 -0
  736. package/templates/default/pages/reset-password.hbs +20 -0
  737. package/templates/default/pages/reset-success.hbs +9 -0
  738. package/templates/default/pages/two-factor-setup.hbs +65 -0
  739. package/templates/default/pages/two-factor-verify.hbs +77 -0
  740. package/templates/default/partials/flash-messages.hbs +10 -0
  741. package/templates/default/partials/footer.hbs +4 -0
  742. package/templates/default/partials/header.hbs +8 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/users/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * User types and interfaces.
3
+ *
4
+ * Defines the data structures for the user model, including the full
5
+ * database record, input types for create/update, and pagination helpers.
6
+ * Also provides a mapping function to convert snake_case database rows
7
+ * to camelCase TypeScript objects.
8
+ *
9
+ * Users belong to exactly one organization and their profile fields
10
+ * follow the OIDC Standard Claims specification (OpenID Connect Core
11
+ * 1.0, §5.1). The `password_hash` column is never exposed outside the
12
+ * repository layer — the `User` interface only has a derived `hasPassword`
13
+ * boolean.
14
+ *
15
+ * These types are the foundation that all other user modules depend on
16
+ * (repository, cache, service, routes, claims).
17
+ */
18
+ import type { PaginatedResult } from '../organizations/index.js';
19
+ import type { TwoFactorMethod } from '../two-factor/types.js';
20
+ export type { PaginatedResult };
21
+ /**
22
+ * User status values — matches the DB CHECK constraint.
23
+ *
24
+ * Lifecycle transitions:
25
+ * - active → inactive (deactivate), suspended (suspend), locked (lock)
26
+ * - inactive → active (reactivate)
27
+ * - suspended → active (unsuspend)
28
+ * - locked → active (unlock)
29
+ */
30
+ export type UserStatus = 'active' | 'inactive' | 'suspended' | 'locked';
31
+ /**
32
+ * Full user record as used throughout the application.
33
+ *
34
+ * Maps to the `users` table columns (see migration 005), but converts
35
+ * snake_case to camelCase and replaces `password_hash` with a derived
36
+ * `hasPassword` boolean for security — the hash never leaves the
37
+ * repository layer.
38
+ */
39
+ export interface User {
40
+ id: string;
41
+ organizationId: string;
42
+ email: string;
43
+ emailVerified: boolean;
44
+ /** Derived from password_hash IS NOT NULL — the hash is never exposed */
45
+ hasPassword: boolean;
46
+ passwordChangedAt: Date | null;
47
+ givenName: string | null;
48
+ familyName: string | null;
49
+ middleName: string | null;
50
+ nickname: string | null;
51
+ preferredUsername: string | null;
52
+ profileUrl: string | null;
53
+ pictureUrl: string | null;
54
+ websiteUrl: string | null;
55
+ gender: string | null;
56
+ /** ISO 8601 date string (YYYY-MM-DD) — stored as string per OIDC §5.1 */
57
+ birthdate: string | null;
58
+ zoneinfo: string | null;
59
+ locale: string | null;
60
+ phoneNumber: string | null;
61
+ phoneNumberVerified: boolean;
62
+ addressStreet: string | null;
63
+ addressLocality: string | null;
64
+ addressRegion: string | null;
65
+ addressPostalCode: string | null;
66
+ addressCountry: string | null;
67
+ /** Whether 2FA is enabled for this user */
68
+ twoFactorEnabled: boolean;
69
+ /** The 2FA method configured ('email' or 'totp'), null if not enabled */
70
+ twoFactorMethod: TwoFactorMethod | null;
71
+ status: UserStatus;
72
+ lockedAt: Date | null;
73
+ lockedReason: string | null;
74
+ lastLoginAt: Date | null;
75
+ loginCount: number;
76
+ /** Consecutive failed password attempts since last successful login */
77
+ failedLoginCount: number;
78
+ /** Timestamp of the most recent failed login attempt */
79
+ lastFailedLoginAt: Date | null;
80
+ createdAt: Date;
81
+ updatedAt: Date;
82
+ }
83
+ /**
84
+ * Input for creating a new user.
85
+ *
86
+ * Only `organizationId` and `email` are required. All profile fields
87
+ * are optional — they can be set later via update. A `password` field
88
+ * (plaintext) is accepted and will be hashed before storage; omit it
89
+ * for passwordless-only users.
90
+ */
91
+ export interface CreateUserInput {
92
+ organizationId: string;
93
+ email: string;
94
+ password?: string;
95
+ givenName?: string;
96
+ familyName?: string;
97
+ middleName?: string;
98
+ nickname?: string;
99
+ preferredUsername?: string;
100
+ profileUrl?: string;
101
+ pictureUrl?: string;
102
+ websiteUrl?: string;
103
+ gender?: string;
104
+ birthdate?: string;
105
+ zoneinfo?: string;
106
+ locale?: string;
107
+ phoneNumber?: string;
108
+ phoneNumberVerified?: boolean;
109
+ address?: AddressInput;
110
+ }
111
+ /**
112
+ * Input for updating an existing user (partial).
113
+ *
114
+ * All fields are optional. Setting a field to `null` clears it in the
115
+ * database. Omitting a field leaves it unchanged.
116
+ */
117
+ export interface UpdateUserInput {
118
+ email?: string;
119
+ emailVerified?: boolean;
120
+ givenName?: string | null;
121
+ familyName?: string | null;
122
+ middleName?: string | null;
123
+ nickname?: string | null;
124
+ preferredUsername?: string | null;
125
+ profileUrl?: string | null;
126
+ pictureUrl?: string | null;
127
+ websiteUrl?: string | null;
128
+ gender?: string | null;
129
+ birthdate?: string | null;
130
+ zoneinfo?: string | null;
131
+ locale?: string | null;
132
+ phoneNumber?: string | null;
133
+ phoneNumberVerified?: boolean;
134
+ address?: AddressInput;
135
+ }
136
+ /**
137
+ * Address input — all fields optional/nullable.
138
+ * Maps to the address_* columns in the users table.
139
+ */
140
+ export interface AddressInput {
141
+ street?: string | null;
142
+ locality?: string | null;
143
+ region?: string | null;
144
+ postalCode?: string | null;
145
+ country?: string | null;
146
+ }
147
+ /**
148
+ * Options for listing users within an organization (paginated).
149
+ * Supports filtering by status, text search across name/email,
150
+ * and configurable sort order.
151
+ */
152
+ export interface UserListOptions {
153
+ organizationId: string;
154
+ page: number;
155
+ pageSize: number;
156
+ status?: UserStatus;
157
+ /** Searches across email, given_name, family_name (ILIKE) */
158
+ search?: string;
159
+ sortBy?: 'email' | 'given_name' | 'family_name' | 'created_at' | 'last_login_at';
160
+ sortOrder?: 'asc' | 'desc';
161
+ }
162
+ /**
163
+ * Raw database row from the users table (snake_case columns).
164
+ *
165
+ * Includes `password_hash` which is needed by the repository layer
166
+ * but must NEVER be exposed via the `User` interface.
167
+ */
168
+ export interface UserRow {
169
+ id: string;
170
+ organization_id: string;
171
+ email: string;
172
+ email_verified: boolean;
173
+ password_hash: string | null;
174
+ password_changed_at: Date | null;
175
+ given_name: string | null;
176
+ family_name: string | null;
177
+ middle_name: string | null;
178
+ nickname: string | null;
179
+ preferred_username: string | null;
180
+ profile_url: string | null;
181
+ picture_url: string | null;
182
+ website_url: string | null;
183
+ gender: string | null;
184
+ /** DATE column — pg returns as string or Date depending on config */
185
+ birthdate: string | null;
186
+ zoneinfo: string | null;
187
+ locale: string | null;
188
+ phone_number: string | null;
189
+ phone_number_verified: boolean;
190
+ address_street: string | null;
191
+ address_locality: string | null;
192
+ address_region: string | null;
193
+ address_postal_code: string | null;
194
+ address_country: string | null;
195
+ two_factor_enabled: boolean;
196
+ two_factor_method: string | null;
197
+ status: string;
198
+ locked_at: Date | null;
199
+ locked_reason: string | null;
200
+ last_login_at: Date | null;
201
+ login_count: number;
202
+ failed_login_count: number;
203
+ last_failed_login_at: Date | null;
204
+ created_at: Date;
205
+ updated_at: Date;
206
+ }
207
+ /**
208
+ * Map a database row to a User object.
209
+ *
210
+ * Converts snake_case column names from PostgreSQL to camelCase
211
+ * TypeScript properties. The `password_hash` field is converted to
212
+ * a `hasPassword` boolean — the hash itself is never included in the
213
+ * User object. The `status` string is cast to `UserStatus` because
214
+ * the DB CHECK constraint guarantees it is a valid value.
215
+ *
216
+ * @param row - Raw database row from the users table
217
+ * @returns Mapped User object with camelCase properties
218
+ */
219
+ export declare function mapRowToUser(row: UserRow): User;
220
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/users/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * User types and interfaces.
3
+ *
4
+ * Defines the data structures for the user model, including the full
5
+ * database record, input types for create/update, and pagination helpers.
6
+ * Also provides a mapping function to convert snake_case database rows
7
+ * to camelCase TypeScript objects.
8
+ *
9
+ * Users belong to exactly one organization and their profile fields
10
+ * follow the OIDC Standard Claims specification (OpenID Connect Core
11
+ * 1.0, §5.1). The `password_hash` column is never exposed outside the
12
+ * repository layer — the `User` interface only has a derived `hasPassword`
13
+ * boolean.
14
+ *
15
+ * These types are the foundation that all other user modules depend on
16
+ * (repository, cache, service, routes, claims).
17
+ */
18
+ /**
19
+ * Map a database row to a User object.
20
+ *
21
+ * Converts snake_case column names from PostgreSQL to camelCase
22
+ * TypeScript properties. The `password_hash` field is converted to
23
+ * a `hasPassword` boolean — the hash itself is never included in the
24
+ * User object. The `status` string is cast to `UserStatus` because
25
+ * the DB CHECK constraint guarantees it is a valid value.
26
+ *
27
+ * @param row - Raw database row from the users table
28
+ * @returns Mapped User object with camelCase properties
29
+ */
30
+ export function mapRowToUser(row) {
31
+ return {
32
+ id: row.id,
33
+ organizationId: row.organization_id,
34
+ // Authentication — derive hasPassword from password_hash
35
+ email: row.email,
36
+ emailVerified: row.email_verified,
37
+ hasPassword: row.password_hash !== null,
38
+ passwordChangedAt: row.password_changed_at,
39
+ // OIDC Standard Claims
40
+ givenName: row.given_name,
41
+ familyName: row.family_name,
42
+ middleName: row.middle_name,
43
+ nickname: row.nickname,
44
+ preferredUsername: row.preferred_username,
45
+ profileUrl: row.profile_url,
46
+ pictureUrl: row.picture_url,
47
+ websiteUrl: row.website_url,
48
+ gender: row.gender,
49
+ birthdate: row.birthdate,
50
+ zoneinfo: row.zoneinfo,
51
+ locale: row.locale,
52
+ phoneNumber: row.phone_number,
53
+ phoneNumberVerified: row.phone_number_verified,
54
+ // Address
55
+ addressStreet: row.address_street,
56
+ addressLocality: row.address_locality,
57
+ addressRegion: row.address_region,
58
+ addressPostalCode: row.address_postal_code,
59
+ addressCountry: row.address_country,
60
+ // Two-factor authentication
61
+ twoFactorEnabled: row.two_factor_enabled,
62
+ twoFactorMethod: row.two_factor_method ?? null,
63
+ // Status & lifecycle
64
+ status: row.status,
65
+ lockedAt: row.locked_at,
66
+ lockedReason: row.locked_reason,
67
+ lastLoginAt: row.last_login_at,
68
+ loginCount: row.login_count,
69
+ // Failed login tracking (account lockout)
70
+ failedLoginCount: row.failed_login_count ?? 0,
71
+ lastFailedLoginAt: row.last_failed_login_at ?? null,
72
+ // Timestamps
73
+ createdAt: row.created_at,
74
+ updatedAt: row.updated_at,
75
+ };
76
+ }
77
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/users/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAmPH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,cAAc,EAAE,GAAG,CAAC,eAAe;QAEnC,yDAAyD;QACzD,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,WAAW,EAAE,GAAG,CAAC,aAAa,KAAK,IAAI;QACvC,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;QAE1C,uBAAuB;QACvB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,iBAAiB,EAAE,GAAG,CAAC,kBAAkB;QACzC,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,mBAAmB,EAAE,GAAG,CAAC,qBAAqB;QAE9C,UAAU;QACV,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,eAAe,EAAE,GAAG,CAAC,gBAAgB;QACrC,aAAa,EAAE,GAAG,CAAC,cAAc;QACjC,iBAAiB,EAAE,GAAG,CAAC,mBAAmB;QAC1C,cAAc,EAAE,GAAG,CAAC,eAAe;QAEnC,4BAA4B;QAC5B,gBAAgB,EAAE,GAAG,CAAC,kBAAkB;QACxC,eAAe,EAAG,GAAG,CAAC,iBAAqC,IAAI,IAAI;QAEnE,qBAAqB;QACrB,MAAM,EAAE,GAAG,CAAC,MAAoB;QAChC,QAAQ,EAAE,GAAG,CAAC,SAAS;QACvB,YAAY,EAAE,GAAG,CAAC,aAAa;QAC/B,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,UAAU,EAAE,GAAG,CAAC,WAAW;QAE3B,0CAA0C;QAC1C,gBAAgB,EAAE,GAAG,CAAC,kBAAkB,IAAI,CAAC;QAC7C,iBAAiB,EAAE,GAAG,CAAC,oBAAoB,IAAI,IAAI;QAEnD,aAAa;QACb,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ {
2
+ "submit": "Submit",
3
+ "cancel": "Cancel",
4
+ "back": "Back",
5
+ "back_to_login": "← Back to login",
6
+ "try_again": "Try again",
7
+ "loading": "Loading...",
8
+ "or": "or",
9
+ "powered_by": "Powered by Porta"
10
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "title": "Authorize access",
3
+ "description": "{{clientName}} is requesting access to your account",
4
+ "scopes_heading": "This application would like to:",
5
+ "approve": "Allow access",
6
+ "deny": "Deny",
7
+ "scope_openid": "Verify your identity",
8
+ "scope_profile": "Access your profile information",
9
+ "scope_email": "Access your email address",
10
+ "scope_phone": "Access your phone number",
11
+ "scope_address": "Access your address",
12
+ "scope_offline_access": "Stay signed in (offline access)"
13
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "magic_link": {
3
+ "subject": "Sign in to your account"
4
+ },
5
+ "password_reset": {
6
+ "subject": "Reset your password"
7
+ },
8
+ "invitation": {
9
+ "subject": "You've been invited to {{orgName}}"
10
+ },
11
+ "welcome": {
12
+ "subject": "Welcome to {{orgName}}"
13
+ },
14
+ "password_changed": {
15
+ "subject": "Your password has been changed"
16
+ }
17
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "page_title": "Something went wrong",
3
+ "generic": "An unexpected error occurred. Please try again.",
4
+ "not_found": "The page you are looking for does not exist.",
5
+ "rate_limited": "Too many requests. Please wait a moment and try again.",
6
+ "rate_limit_exceeded": "Too many attempts. Please wait a moment and try again.",
7
+ "token_expired": "This link has expired. Please request a new one.",
8
+ "token_invalid": "This link is invalid or has already been used.",
9
+ "session_expired": "Your session has expired. Please sign in again.",
10
+ "interaction_expired": "Your session has expired. Please start the sign-in process again.",
11
+ "csrf_invalid": "Security verification failed. Please refresh the page and try again.",
12
+ "magic_link_expired": "This sign-in link has expired. Please request a new one.",
13
+ "reset_link_expired": "This password reset link has expired. Please request a new one.",
14
+ "access_denied": "Access denied. You do not have permission to access this resource.",
15
+ "code_label": "Error code",
16
+ "org_not_found": "Organization not found.",
17
+ "org_suspended": "This organization has been suspended.",
18
+ "org_archived": "This organization is no longer active.",
19
+ "login_method_disabled": "This authentication method is not available for this application.",
20
+ "no_login_methods_configured": "No authentication methods are configured for this application. Please contact your administrator."
21
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "title": "Forgot your password?",
3
+ "description": "Enter your email address and we'll send you a link to reset your password.",
4
+ "email_label": "Email address",
5
+ "email_placeholder": "you@example.com",
6
+ "submit": "Send reset link",
7
+ "check_email": "Check your email for a password reset link.",
8
+ "success_title": "Check your email",
9
+ "success_message": "If an account with that email exists, we've sent a password reset link.",
10
+ "error_rate_limited": "Too many reset requests. Please try again later."
11
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "title": "Accept your invitation",
3
+ "description": "You've been invited to join {{orgName}}. Set a password to activate your account.",
4
+ "email_label": "Email address",
5
+ "password_label": "Password",
6
+ "password_placeholder": "Choose a password",
7
+ "confirm_label": "Confirm password",
8
+ "confirm_placeholder": "Re-enter your password",
9
+ "submit": "Create account",
10
+ "success_title": "Account created!",
11
+ "success_message": "Your account has been set up successfully. You can now sign in.",
12
+ "go_to_login": "Go to sign in",
13
+ "expired_title": "Invitation expired",
14
+ "expired_message": "This invitation link has expired or is no longer valid.",
15
+ "contact_admin": "Please contact your organization administrator for a new invitation.",
16
+ "error_mismatch": "Passwords do not match",
17
+ "error_weak": "Password does not meet the minimum requirements"
18
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "title": "Sign in to your account",
3
+ "subtitle": "Sign in to continue to {{clientName}}",
4
+ "email_label": "Email address",
5
+ "email_placeholder": "you@example.com",
6
+ "password_label": "Password",
7
+ "password_placeholder": "Enter your password",
8
+ "submit": "Sign in",
9
+ "forgot_password": "Forgot your password?",
10
+ "or_divider": "or",
11
+ "magic_link_button": "Send me a sign-in link",
12
+ "error_invalid": "Invalid email or password",
13
+ "error_account_inactive": "Your account is not yet active. Please contact your administrator.",
14
+ "error_account_locked": "Your account has been locked. Please contact your administrator.",
15
+ "error_account_suspended": "Your account has been suspended. Please contact your administrator.",
16
+ "error_rate_limited": "Too many sign-in attempts. Please try again later."
17
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "title": "Sign out",
3
+ "message": "Are you sure you want to sign out?",
4
+ "message_client": "You are about to sign out of this application.",
5
+ "confirm": "Sign out",
6
+ "cancel": "Return to application",
7
+ "success_title": "Signed out",
8
+ "success_message": "You have been signed out successfully."
9
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "sent_title": "Check your email",
3
+ "check_email": "We've sent a sign-in link to {{email}}.",
4
+ "expires_note": "The link expires in 15 minutes.",
5
+ "error_rate_limited": "Too many magic link requests. Please try again later.",
6
+ "error_token_expired": "This sign-in link has expired. Please request a new one.",
7
+ "error_token_invalid": "This sign-in link is invalid. Please request a new one.",
8
+ "success_title": "Email verified",
9
+ "success_message": "Your sign-in link has been verified successfully.",
10
+ "success_hint": "Please return to the browser where you started the sign-in and the login will complete automatically.",
11
+ "success_close_tab": "You can safely close this tab."
12
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "title": "Set a new password",
3
+ "description": "Choose a strong password for your account.",
4
+ "password_label": "New password",
5
+ "password_placeholder": "Enter new password",
6
+ "confirm_label": "Confirm password",
7
+ "confirm_placeholder": "Re-enter new password",
8
+ "submit": "Reset password",
9
+ "success_title": "Password reset successfully",
10
+ "success_message": "Your password has been updated. You can now sign in with your new password.",
11
+ "back_to_login": "Go to sign in",
12
+ "error_mismatch": "Passwords do not match",
13
+ "error_weak": "Password does not meet the minimum requirements",
14
+ "error_token_expired": "This reset link has expired. Please request a new one.",
15
+ "error_token_invalid": "This reset link is invalid. Please request a new one."
16
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "verify_title": "Two-factor authentication",
3
+ "verify_email_subtitle": "We sent a verification code to {{maskedEmail}}",
4
+ "verify_email_subtitle_prefix": "We sent a verification code to",
5
+ "verify_totp_subtitle": "Enter the code from your authenticator app",
6
+ "code_label": "Verification code",
7
+ "code_placeholder": "000000",
8
+ "verify_button": "Verify",
9
+ "resend_code": "Resend code",
10
+ "or_divider": "or",
11
+ "recovery_prompt": "Lost access to your authenticator?",
12
+ "use_recovery_code": "Use a recovery code",
13
+ "use_verification_code": "Use verification code instead",
14
+ "error_code_required": "Please enter a verification code",
15
+ "error_invalid_code": "Invalid verification code. Please try again.",
16
+ "setup_title": "Set up two-factor authentication",
17
+ "setup_subtitle": "Your organization requires two-factor authentication. Choose a method to secure your account.",
18
+ "setup_step1": "Step 1: Scan QR code",
19
+ "setup_scan_instructions": "Open your authenticator app (Google Authenticator, Authy, 1Password, etc.) and scan this QR code.",
20
+ "qr_code_alt": "TOTP QR code",
21
+ "manual_entry_label": "Can't scan? Enter this code manually:",
22
+ "setup_step2": "Step 2: Enter verification code",
23
+ "setup_enter_code_instructions": "Enter the 6-digit code from your authenticator app to confirm setup.",
24
+ "totp_code_label": "Authenticator code",
25
+ "confirm_setup_button": "Confirm & sign in",
26
+ "recovery_codes_title": "Save your recovery codes",
27
+ "recovery_codes_warning": "Save these recovery codes in a safe place. Each code can only be used once. If you lose access to your authenticator, you can use a recovery code to sign in.",
28
+ "use_email_instead": "Use email verification instead"
29
+ }
File without changes
@@ -0,0 +1,22 @@
1
+ -- Up Migration
2
+
3
+ -- Enable required PostgreSQL extensions
4
+ CREATE EXTENSION IF NOT EXISTS "pgcrypto"; -- gen_random_uuid() for UUID primary keys
5
+ CREATE EXTENSION IF NOT EXISTS "citext"; -- Case-insensitive text type for emails
6
+
7
+ -- Reusable trigger function to auto-update the updated_at column
8
+ -- Attach to any table: CREATE TRIGGER set_updated_at BEFORE UPDATE ON <table>
9
+ -- FOR EACH ROW EXECUTE FUNCTION trigger_set_updated_at();
10
+ CREATE OR REPLACE FUNCTION trigger_set_updated_at()
11
+ RETURNS TRIGGER AS $$
12
+ BEGIN
13
+ NEW.updated_at = NOW();
14
+ RETURN NEW;
15
+ END;
16
+ $$ LANGUAGE plpgsql;
17
+
18
+ -- Down Migration
19
+
20
+ DROP FUNCTION IF EXISTS trigger_set_updated_at() CASCADE;
21
+ DROP EXTENSION IF EXISTS "citext";
22
+ DROP EXTENSION IF EXISTS "pgcrypto";
@@ -0,0 +1,43 @@
1
+ -- Up Migration
2
+
3
+ -- The tenant table — each organization represents a customer with their own user pool
4
+ CREATE TABLE organizations (
5
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
6
+ name VARCHAR(255) NOT NULL,
7
+ slug VARCHAR(100) NOT NULL UNIQUE, -- URL-safe identifier, used in OIDC issuer path
8
+ status VARCHAR(20) NOT NULL DEFAULT 'active'
9
+ CHECK (status IN ('active', 'suspended', 'archived')),
10
+ is_super_admin BOOLEAN NOT NULL DEFAULT FALSE, -- Only one org can be super-admin
11
+
12
+ -- Branding (per-tenant login page customization)
13
+ branding_logo_url TEXT,
14
+ branding_favicon_url TEXT,
15
+ branding_primary_color VARCHAR(7), -- Hex color, e.g., #3B82F6
16
+ branding_company_name VARCHAR(255),
17
+ branding_custom_css TEXT, -- Optional raw CSS override
18
+
19
+ -- Locale
20
+ default_locale VARCHAR(10) DEFAULT 'en', -- Fallback locale for this org
21
+
22
+ -- Metadata
23
+ created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
24
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
25
+ );
26
+
27
+ -- Ensures only one super-admin org exists via partial unique index
28
+ CREATE UNIQUE INDEX idx_organizations_super_admin
29
+ ON organizations (is_super_admin) WHERE is_super_admin = TRUE;
30
+
31
+ -- Auto-update updated_at on row modification
32
+ CREATE TRIGGER set_updated_at
33
+ BEFORE UPDATE ON organizations
34
+ FOR EACH ROW
35
+ EXECUTE FUNCTION trigger_set_updated_at();
36
+
37
+ COMMENT ON TABLE organizations IS 'Tenant table — each organization represents a customer with their own user pool';
38
+ COMMENT ON COLUMN organizations.slug IS 'URL-safe identifier used in OIDC issuer path (e.g., /{slug}/.well-known/openid-configuration)';
39
+ COMMENT ON COLUMN organizations.is_super_admin IS 'Only one organization can be super-admin (enforced by partial unique index)';
40
+
41
+ -- Down Migration
42
+
43
+ DROP TABLE IF EXISTS organizations CASCADE;