@adonis-agora/authkit-server 0.34.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 (389) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +158 -0
  3. package/build/assets/grafana/authkit-dashboard.json +118 -0
  4. package/build/commands/clients_create.d.ts +27 -0
  5. package/build/commands/clients_create.js +121 -0
  6. package/build/commands/commands.json +292 -0
  7. package/build/commands/configure.d.ts +2 -0
  8. package/build/commands/configure.js +45 -0
  9. package/build/commands/doctor.d.ts +10 -0
  10. package/build/commands/doctor.js +113 -0
  11. package/build/commands/eject.d.ts +11 -0
  12. package/build/commands/eject.js +96 -0
  13. package/build/commands/expire_scan.d.ts +28 -0
  14. package/build/commands/expire_scan.js +92 -0
  15. package/build/commands/import_users.d.ts +17 -0
  16. package/build/commands/import_users.js +80 -0
  17. package/build/commands/keys_rotate.d.ts +21 -0
  18. package/build/commands/keys_rotate.js +126 -0
  19. package/build/commands/main.d.ts +12 -0
  20. package/build/commands/main.js +38 -0
  21. package/build/commands/settings_get.d.ts +18 -0
  22. package/build/commands/settings_get.js +43 -0
  23. package/build/commands/settings_list.d.ts +17 -0
  24. package/build/commands/settings_list.js +39 -0
  25. package/build/commands/settings_set.d.ts +20 -0
  26. package/build/commands/settings_set.js +55 -0
  27. package/build/commands/settings_unset.d.ts +18 -0
  28. package/build/commands/settings_unset.js +46 -0
  29. package/build/commands/ui_preset.d.ts +4 -0
  30. package/build/commands/ui_preset.js +32 -0
  31. package/build/database/migrations/make_authkit_oidc_table.d.ts +6 -0
  32. package/build/database/migrations/make_authkit_oidc_table.js +19 -0
  33. package/build/host/ui/admin.html +29 -0
  34. package/build/host/views/account/apps.edge +59 -0
  35. package/build/host/views/account/confirm.edge +70 -0
  36. package/build/host/views/account/email-confirmed.edge +16 -0
  37. package/build/host/views/account/login.edge +33 -0
  38. package/build/host/views/account/mfa.edge +152 -0
  39. package/build/host/views/account/orgs.edge +58 -0
  40. package/build/host/views/account/security.edge +215 -0
  41. package/build/host/views/account/tokens.edge +75 -0
  42. package/build/host/views/consent.edge +20 -0
  43. package/build/host/views/forgot.edge +43 -0
  44. package/build/host/views/login.edge +251 -0
  45. package/build/host/views/maintenance.edge +32 -0
  46. package/build/host/views/mfa-challenge.edge +107 -0
  47. package/build/host/views/otp-unlock.edge +40 -0
  48. package/build/host/views/partials/styles.edge +2 -0
  49. package/build/host/views/reset.edge +30 -0
  50. package/build/host/views/signup.edge +62 -0
  51. package/build/host/views/verify-email.edge +17 -0
  52. package/build/index.d.ts +115 -0
  53. package/build/index.js +76 -0
  54. package/build/password/common_passwords.txt +10000 -0
  55. package/build/providers/authkit_server_provider.d.ts +27 -0
  56. package/build/providers/authkit_server_provider.js +242 -0
  57. package/build/src/accounts/account_store.d.ts +578 -0
  58. package/build/src/accounts/account_store.js +60 -0
  59. package/build/src/accounts/lucid_account_store.d.ts +156 -0
  60. package/build/src/accounts/lucid_account_store.js +294 -0
  61. package/build/src/accounts/lucid_store/core.d.ts +9 -0
  62. package/build/src/accounts/lucid_store/core.js +306 -0
  63. package/build/src/accounts/lucid_store/mfa.d.ts +15 -0
  64. package/build/src/accounts/lucid_store/mfa.js +108 -0
  65. package/build/src/accounts/lucid_store/organizations.d.ts +13 -0
  66. package/build/src/accounts/lucid_store/organizations.js +294 -0
  67. package/build/src/accounts/lucid_store/password_hygiene.d.ts +20 -0
  68. package/build/src/accounts/lucid_store/password_hygiene.js +130 -0
  69. package/build/src/accounts/lucid_store/provider_identity.d.ts +8 -0
  70. package/build/src/accounts/lucid_store/provider_identity.js +59 -0
  71. package/build/src/accounts/lucid_store/shared.d.ts +113 -0
  72. package/build/src/accounts/lucid_store/shared.js +130 -0
  73. package/build/src/accounts/lucid_store/status_profile.d.ts +34 -0
  74. package/build/src/accounts/lucid_store/status_profile.js +100 -0
  75. package/build/src/accounts/lucid_store/webauthn.d.ts +8 -0
  76. package/build/src/accounts/lucid_store/webauthn.js +140 -0
  77. package/build/src/accounts/lucid_stores.d.ts +45 -0
  78. package/build/src/accounts/lucid_stores.js +30 -0
  79. package/build/src/adapters/adapter_contract.d.ts +37 -0
  80. package/build/src/adapters/adapter_contract.js +1 -0
  81. package/build/src/adapters/database_adapter.d.ts +21 -0
  82. package/build/src/adapters/database_adapter.js +79 -0
  83. package/build/src/adapters/factory.d.ts +30 -0
  84. package/build/src/adapters/factory.js +43 -0
  85. package/build/src/adapters/redis_adapter.d.ts +24 -0
  86. package/build/src/adapters/redis_adapter.js +122 -0
  87. package/build/src/audit/audit_sink.d.ts +63 -0
  88. package/build/src/audit/audit_sink.js +1 -0
  89. package/build/src/audit/lucid_audit_sink.d.ts +10 -0
  90. package/build/src/audit/lucid_audit_sink.js +99 -0
  91. package/build/src/commands/expire_scan_command.d.ts +60 -0
  92. package/build/src/commands/expire_scan_command.js +229 -0
  93. package/build/src/commands/import_clients.d.ts +40 -0
  94. package/build/src/commands/import_clients.js +79 -0
  95. package/build/src/commands/import_users.d.ts +51 -0
  96. package/build/src/commands/import_users.js +94 -0
  97. package/build/src/commands/resolve_config.d.ts +13 -0
  98. package/build/src/commands/resolve_config.js +18 -0
  99. package/build/src/commands/settings_commands.d.ts +47 -0
  100. package/build/src/commands/settings_commands.js +270 -0
  101. package/build/src/controllers/oidc_callback_controller.d.ts +22 -0
  102. package/build/src/controllers/oidc_callback_controller.js +33 -0
  103. package/build/src/define_config.d.ts +772 -0
  104. package/build/src/define_config.js +351 -0
  105. package/build/src/doctor/checks.d.ts +197 -0
  106. package/build/src/doctor/checks.js +858 -0
  107. package/build/src/events/dispatcher.d.ts +45 -0
  108. package/build/src/events/dispatcher.js +117 -0
  109. package/build/src/host/account_api/account_api_controller.d.ts +245 -0
  110. package/build/src/host/account_api/account_api_controller.js +827 -0
  111. package/build/src/host/account_deletion_ops.d.ts +80 -0
  112. package/build/src/host/account_deletion_ops.js +118 -0
  113. package/build/src/host/account_deletion_service.d.ts +63 -0
  114. package/build/src/host/account_deletion_service.js +133 -0
  115. package/build/src/host/account_export_service.d.ts +76 -0
  116. package/build/src/host/account_export_service.js +140 -0
  117. package/build/src/host/account_home.d.ts +11 -0
  118. package/build/src/host/account_home.js +11 -0
  119. package/build/src/host/account_lockout.d.ts +86 -0
  120. package/build/src/host/account_lockout.js +185 -0
  121. package/build/src/host/active_org_cookie.d.ts +28 -0
  122. package/build/src/host/active_org_cookie.js +47 -0
  123. package/build/src/host/admin_api/admin_api_guard.d.ts +16 -0
  124. package/build/src/host/admin_api/admin_api_guard.js +59 -0
  125. package/build/src/host/admin_api/admin_orgs_service.d.ts +125 -0
  126. package/build/src/host/admin_api/admin_orgs_service.js +324 -0
  127. package/build/src/host/admin_api/admin_users_service.d.ts +163 -0
  128. package/build/src/host/admin_api/admin_users_service.js +308 -0
  129. package/build/src/host/admin_api/api_clients_controller.d.ts +54 -0
  130. package/build/src/host/admin_api/api_clients_controller.js +89 -0
  131. package/build/src/host/admin_api/api_keys_controller.d.ts +19 -0
  132. package/build/src/host/admin_api/api_keys_controller.js +36 -0
  133. package/build/src/host/admin_api/api_misc_controller.d.ts +19 -0
  134. package/build/src/host/admin_api/api_misc_controller.js +44 -0
  135. package/build/src/host/admin_api/api_orgs_controller.d.ts +108 -0
  136. package/build/src/host/admin_api/api_orgs_controller.js +189 -0
  137. package/build/src/host/admin_api/api_settings_controller.d.ts +55 -0
  138. package/build/src/host/admin_api/api_settings_controller.js +134 -0
  139. package/build/src/host/admin_api/api_users_controller.d.ts +108 -0
  140. package/build/src/host/admin_api/api_users_controller.js +187 -0
  141. package/build/src/host/admin_api/dto.d.ts +131 -0
  142. package/build/src/host/admin_api/dto.js +122 -0
  143. package/build/src/host/admin_api/token_verify_service.d.ts +34 -0
  144. package/build/src/host/admin_api/token_verify_service.js +74 -0
  145. package/build/src/host/admin_clients_service.d.ts +88 -0
  146. package/build/src/host/admin_clients_service.js +181 -0
  147. package/build/src/host/admin_console/admin_shell_controller.d.ts +27 -0
  148. package/build/src/host/admin_console/admin_shell_controller.js +167 -0
  149. package/build/src/host/admin_console/console_audit_controller.d.ts +17 -0
  150. package/build/src/host/admin_console/console_audit_controller.js +25 -0
  151. package/build/src/host/admin_console/console_clients_controller.d.ts +53 -0
  152. package/build/src/host/admin_console/console_clients_controller.js +102 -0
  153. package/build/src/host/admin_console/console_impersonation_controller.d.ts +23 -0
  154. package/build/src/host/admin_console/console_impersonation_controller.js +45 -0
  155. package/build/src/host/admin_console/console_keys_controller.d.ts +24 -0
  156. package/build/src/host/admin_console/console_keys_controller.js +41 -0
  157. package/build/src/host/admin_console/console_orgs_controller.d.ts +96 -0
  158. package/build/src/host/admin_console/console_orgs_controller.js +238 -0
  159. package/build/src/host/admin_console/console_overview_controller.d.ts +27 -0
  160. package/build/src/host/admin_console/console_overview_controller.js +44 -0
  161. package/build/src/host/admin_console/console_roles_controller.d.ts +31 -0
  162. package/build/src/host/admin_console/console_roles_controller.js +108 -0
  163. package/build/src/host/admin_console/console_sessions_controller.d.ts +91 -0
  164. package/build/src/host/admin_console/console_sessions_controller.js +125 -0
  165. package/build/src/host/admin_console/console_settings_controller.d.ts +47 -0
  166. package/build/src/host/admin_console/console_settings_controller.js +115 -0
  167. package/build/src/host/admin_console/console_users_controller.d.ts +110 -0
  168. package/build/src/host/admin_console/console_users_controller.js +212 -0
  169. package/build/src/host/admin_prefix.d.ts +50 -0
  170. package/build/src/host/admin_prefix.js +77 -0
  171. package/build/src/host/admin_sessions_service.d.ts +119 -0
  172. package/build/src/host/admin_sessions_service.js +284 -0
  173. package/build/src/host/admin_stats_service.d.ts +44 -0
  174. package/build/src/host/admin_stats_service.js +130 -0
  175. package/build/src/host/admin_validators.d.ts +247 -0
  176. package/build/src/host/admin_validators.js +197 -0
  177. package/build/src/host/augmentations.d.ts +12 -0
  178. package/build/src/host/augmentations.js +1 -0
  179. package/build/src/host/auth_host_config.d.ts +22 -0
  180. package/build/src/host/auth_host_config.js +13 -0
  181. package/build/src/host/avatar_storage.d.ts +68 -0
  182. package/build/src/host/avatar_storage.js +166 -0
  183. package/build/src/host/bot_protection.d.ts +187 -0
  184. package/build/src/host/bot_protection.js +132 -0
  185. package/build/src/host/branding.d.ts +19 -0
  186. package/build/src/host/branding.js +8 -0
  187. package/build/src/host/config_locks.d.ts +38 -0
  188. package/build/src/host/config_locks.js +70 -0
  189. package/build/src/host/console_session.d.ts +27 -0
  190. package/build/src/host/console_session.js +36 -0
  191. package/build/src/host/controllers/account_apps_controller.d.ts +15 -0
  192. package/build/src/host/controllers/account_apps_controller.js +61 -0
  193. package/build/src/host/controllers/account_confirm_controller.d.ts +24 -0
  194. package/build/src/host/controllers/account_confirm_controller.js +144 -0
  195. package/build/src/host/controllers/account_mfa_controller.d.ts +28 -0
  196. package/build/src/host/controllers/account_mfa_controller.js +208 -0
  197. package/build/src/host/controllers/account_orgs_controller.d.ts +80 -0
  198. package/build/src/host/controllers/account_orgs_controller.js +401 -0
  199. package/build/src/host/controllers/account_security_controller.d.ts +43 -0
  200. package/build/src/host/controllers/account_security_controller.js +546 -0
  201. package/build/src/host/controllers/account_session_controller.d.ts +21 -0
  202. package/build/src/host/controllers/account_session_controller.js +113 -0
  203. package/build/src/host/controllers/account_tokens_controller.d.ts +7 -0
  204. package/build/src/host/controllers/account_tokens_controller.js +67 -0
  205. package/build/src/host/controllers/interaction_controller.d.ts +125 -0
  206. package/build/src/host/controllers/interaction_controller.js +981 -0
  207. package/build/src/host/controllers/pat_introspection_controller.d.ts +22 -0
  208. package/build/src/host/controllers/pat_introspection_controller.js +46 -0
  209. package/build/src/host/controllers/registration_controller.d.ts +18 -0
  210. package/build/src/host/controllers/registration_controller.js +382 -0
  211. package/build/src/host/controllers/social_controller.d.ts +8 -0
  212. package/build/src/host/controllers/social_controller.js +89 -0
  213. package/build/src/host/csrf.d.ts +29 -0
  214. package/build/src/host/csrf.js +14 -0
  215. package/build/src/host/default_mailer.d.ts +112 -0
  216. package/build/src/host/default_mailer.js +417 -0
  217. package/build/src/host/durable/account_deletion_workflow.d.ts +48 -0
  218. package/build/src/host/durable/account_deletion_workflow.js +86 -0
  219. package/build/src/host/durable/account_export_workflow.d.ts +68 -0
  220. package/build/src/host/durable/account_export_workflow.js +93 -0
  221. package/build/src/host/durable/index.d.ts +68 -0
  222. package/build/src/host/durable/index.js +77 -0
  223. package/build/src/host/email_templates.d.ts +39 -0
  224. package/build/src/host/email_templates.js +69 -0
  225. package/build/src/host/geo.d.ts +22 -0
  226. package/build/src/host/geo.js +39 -0
  227. package/build/src/host/i18n.d.ts +1416 -0
  228. package/build/src/host/i18n.js +1583 -0
  229. package/build/src/host/impersonation.d.ts +25 -0
  230. package/build/src/host/impersonation.js +31 -0
  231. package/build/src/host/key_rotation.d.ts +14 -0
  232. package/build/src/host/key_rotation.js +27 -0
  233. package/build/src/host/key_rotation_actions.d.ts +42 -0
  234. package/build/src/host/key_rotation_actions.js +27 -0
  235. package/build/src/host/login_attempt.d.ts +98 -0
  236. package/build/src/host/login_attempt.js +211 -0
  237. package/build/src/host/login_notify.d.ts +27 -0
  238. package/build/src/host/login_notify.js +142 -0
  239. package/build/src/host/middleware/account_auth.d.ts +7 -0
  240. package/build/src/host/middleware/account_auth.js +11 -0
  241. package/build/src/host/otp_lockout.d.ts +103 -0
  242. package/build/src/host/otp_lockout.js +221 -0
  243. package/build/src/host/rate_limit.d.ts +39 -0
  244. package/build/src/host/rate_limit.js +94 -0
  245. package/build/src/host/register_auth_host.d.ts +97 -0
  246. package/build/src/host/register_auth_host.js +466 -0
  247. package/build/src/host/renderers/edge_renderer.d.ts +12 -0
  248. package/build/src/host/renderers/edge_renderer.js +38 -0
  249. package/build/src/host/renderers/inertia_renderer.d.ts +70 -0
  250. package/build/src/host/renderers/inertia_renderer.js +54 -0
  251. package/build/src/host/runtime_settings.d.ts +181 -0
  252. package/build/src/host/runtime_settings.js +307 -0
  253. package/build/src/host/runtime_toggles.d.ts +807 -0
  254. package/build/src/host/runtime_toggles.js +784 -0
  255. package/build/src/host/security_notice_service.d.ts +36 -0
  256. package/build/src/host/security_notice_service.js +87 -0
  257. package/build/src/host/session_context.d.ts +23 -0
  258. package/build/src/host/session_context.js +89 -0
  259. package/build/src/host/sudo_mode.d.ts +56 -0
  260. package/build/src/host/sudo_mode.js +99 -0
  261. package/build/src/host/svg_chart.d.ts +15 -0
  262. package/build/src/host/svg_chart.js +45 -0
  263. package/build/src/host/trusted_device.d.ts +61 -0
  264. package/build/src/host/trusted_device.js +65 -0
  265. package/build/src/host/ui-dist/assets/index-CRWcmsex.js +137 -0
  266. package/build/src/host/ui-dist/assets/index-DTSmD4RU.css +1 -0
  267. package/build/src/host/ui-dist/index.html +17 -0
  268. package/build/src/host/user_agent.d.ts +18 -0
  269. package/build/src/host/user_agent.js +50 -0
  270. package/build/src/host/validators.d.ts +127 -0
  271. package/build/src/host/validators.js +53 -0
  272. package/build/src/keys/jwks_manager.d.ts +6 -0
  273. package/build/src/keys/jwks_manager.js +11 -0
  274. package/build/src/keys/keystore.d.ts +52 -0
  275. package/build/src/keys/keystore.js +68 -0
  276. package/build/src/keys/keystore_codec.d.ts +20 -0
  277. package/build/src/keys/keystore_codec.js +42 -0
  278. package/build/src/keys/keystore_crypto.d.ts +9 -0
  279. package/build/src/keys/keystore_crypto.js +27 -0
  280. package/build/src/keys/keystore_manager.d.ts +43 -0
  281. package/build/src/keys/keystore_manager.js +104 -0
  282. package/build/src/keys/keystore_vault.d.ts +113 -0
  283. package/build/src/keys/keystore_vault.js +265 -0
  284. package/build/src/mixins/json_column.d.ts +33 -0
  285. package/build/src/mixins/json_column.js +38 -0
  286. package/build/src/mixins/with_audit_log.d.ts +19 -0
  287. package/build/src/mixins/with_audit_log.js +39 -0
  288. package/build/src/mixins/with_auth_user.d.ts +24 -0
  289. package/build/src/mixins/with_auth_user.js +46 -0
  290. package/build/src/mixins/with_credentials.d.ts +20 -0
  291. package/build/src/mixins/with_credentials.js +29 -0
  292. package/build/src/mixins/with_mfa.d.ts +35 -0
  293. package/build/src/mixins/with_mfa.js +21 -0
  294. package/build/src/mixins/with_personal_access_token.d.ts +19 -0
  295. package/build/src/mixins/with_personal_access_token.js +42 -0
  296. package/build/src/mixins/with_provider_identity.d.ts +20 -0
  297. package/build/src/mixins/with_provider_identity.js +32 -0
  298. package/build/src/mixins/with_webauthn_credential.d.ts +37 -0
  299. package/build/src/mixins/with_webauthn_credential.js +46 -0
  300. package/build/src/observability/diagnostics_bridge.d.ts +6 -0
  301. package/build/src/observability/diagnostics_bridge.js +27 -0
  302. package/build/src/observability/metrics_controller.d.ts +5 -0
  303. package/build/src/observability/metrics_controller.js +24 -0
  304. package/build/src/observability/metrics_service.d.ts +2 -0
  305. package/build/src/observability/metrics_service.js +7 -0
  306. package/build/src/observability/otel_recorder.d.ts +10 -0
  307. package/build/src/observability/otel_recorder.js +59 -0
  308. package/build/src/observability/telescope/data_providers.d.ts +24 -0
  309. package/build/src/observability/telescope/data_providers.js +235 -0
  310. package/build/src/observability/telescope/extension.d.ts +29 -0
  311. package/build/src/observability/telescope/extension.js +167 -0
  312. package/build/src/observability/telescope/index.d.ts +8 -0
  313. package/build/src/observability/telescope/index.js +8 -0
  314. package/build/src/observability/wire_provider_events.d.ts +12 -0
  315. package/build/src/observability/wire_provider_events.js +30 -0
  316. package/build/src/password/common_passwords.d.ts +31 -0
  317. package/build/src/password/common_passwords.js +73 -0
  318. package/build/src/password/password_manager.d.ts +163 -0
  319. package/build/src/password/password_manager.js +191 -0
  320. package/build/src/password/policy.d.ts +71 -0
  321. package/build/src/password/policy.js +55 -0
  322. package/build/src/password/pwned.d.ts +36 -0
  323. package/build/src/password/pwned.js +52 -0
  324. package/build/src/pat/lucid_pat_store.d.ts +6 -0
  325. package/build/src/pat/lucid_pat_store.js +62 -0
  326. package/build/src/pat/pat_store.d.ts +31 -0
  327. package/build/src/pat/pat_store.js +1 -0
  328. package/build/src/pat/pat_tokens.d.ts +4 -0
  329. package/build/src/pat/pat_tokens.js +9 -0
  330. package/build/src/provider/build_provider.d.ts +45 -0
  331. package/build/src/provider/build_provider.js +219 -0
  332. package/build/src/provider/device_sources.d.ts +6 -0
  333. package/build/src/provider/device_sources.js +65 -0
  334. package/build/src/provider/interaction_actions.d.ts +36 -0
  335. package/build/src/provider/interaction_actions.js +55 -0
  336. package/build/src/provider/key_rotation_scheduler.d.ts +28 -0
  337. package/build/src/provider/key_rotation_scheduler.js +40 -0
  338. package/build/src/provider/keystore_reload.d.ts +21 -0
  339. package/build/src/provider/keystore_reload.js +39 -0
  340. package/build/src/provider/logout_sources.d.ts +13 -0
  341. package/build/src/provider/logout_sources.js +64 -0
  342. package/build/src/provider/oidc_service.d.ts +81 -0
  343. package/build/src/provider/oidc_service.js +254 -0
  344. package/build/src/provider/single_flight_lock.d.ts +18 -0
  345. package/build/src/provider/single_flight_lock.js +31 -0
  346. package/build/src/provider/token_exchange.d.ts +21 -0
  347. package/build/src/provider/token_exchange.js +124 -0
  348. package/build/src/register_routes.d.ts +16 -0
  349. package/build/src/register_routes.js +21 -0
  350. package/build/src/schema/ensure.d.ts +41 -0
  351. package/build/src/schema/ensure.js +262 -0
  352. package/build/stubs/config/authkit.stub +20 -0
  353. package/build/stubs/config/authkit_react.stub +52 -0
  354. package/build/stubs/main.d.ts +1 -0
  355. package/build/stubs/main.js +2 -0
  356. package/build/stubs/models/auth_user.stub +22 -0
  357. package/build/stubs/ui/edge/views/consent.edge +13 -0
  358. package/build/stubs/ui/edge/views/login.edge +19 -0
  359. package/build/stubs/ui/react/components/auth_shell.tsx +67 -0
  360. package/build/stubs/ui/react/pages/account/login.tsx +56 -0
  361. package/build/stubs/ui/react/pages/account/mfa.tsx +132 -0
  362. package/build/stubs/ui/react/pages/account/tokens.tsx +88 -0
  363. package/build/stubs/ui/react/pages/consent.tsx +39 -0
  364. package/build/stubs/ui/react/pages/forgot.tsx +44 -0
  365. package/build/stubs/ui/react/pages/login.tsx +171 -0
  366. package/build/stubs/ui/react/pages/mfa-challenge.tsx +72 -0
  367. package/build/stubs/ui/react/pages/reset.tsx +58 -0
  368. package/build/stubs/ui/react/pages/signup.tsx +78 -0
  369. package/build/stubs/ui/react/pages/verify-email.tsx +24 -0
  370. package/build/types.d.ts +7 -0
  371. package/build/types.js +1 -0
  372. package/package.json +147 -0
  373. package/stubs/config/authkit.stub +20 -0
  374. package/stubs/config/authkit_react.stub +52 -0
  375. package/stubs/main.ts +2 -0
  376. package/stubs/models/auth_user.stub +22 -0
  377. package/stubs/ui/edge/views/consent.edge +13 -0
  378. package/stubs/ui/edge/views/login.edge +19 -0
  379. package/stubs/ui/react/components/auth_shell.tsx +67 -0
  380. package/stubs/ui/react/pages/account/login.tsx +56 -0
  381. package/stubs/ui/react/pages/account/mfa.tsx +132 -0
  382. package/stubs/ui/react/pages/account/tokens.tsx +88 -0
  383. package/stubs/ui/react/pages/consent.tsx +39 -0
  384. package/stubs/ui/react/pages/forgot.tsx +44 -0
  385. package/stubs/ui/react/pages/login.tsx +171 -0
  386. package/stubs/ui/react/pages/mfa-challenge.tsx +72 -0
  387. package/stubs/ui/react/pages/reset.tsx +58 -0
  388. package/stubs/ui/react/pages/signup.tsx +78 -0
  389. package/stubs/ui/react/pages/verify-email.tsx +24 -0
@@ -0,0 +1,807 @@
1
+ /**
2
+ * Runtime toggles — settings de `auth_settings` que controlam comportamento
3
+ * operacional em tempo de execução, no padrão do bot_protection resolver.
4
+ *
5
+ * Cada setting segue o contrato:
6
+ * - setting presente → manda (sobrescreve config estático)
7
+ * - setting ausente/inválido/erro DB → config estático (fail-safe total)
8
+ *
9
+ * Keys conhecidas em `auth_settings`:
10
+ * - `registration` → RegistrationSetting
11
+ * - `require_verified_email` → RequireVerifiedEmailSetting
12
+ * - `maintenance_mode` → MaintenanceModeSetting
13
+ */
14
+ import type { SettingsCapability } from './runtime_settings.js';
15
+ /**
16
+ * Chaves conhecidas do catálogo de runtime settings. Centralizado aqui para
17
+ * que qualquer code-path possa importar a constante e não depender de strings.
18
+ */
19
+ export declare const SETTING_KEYS: {
20
+ readonly BOT_PROTECTION: "bot_protection";
21
+ readonly REGISTRATION: "registration";
22
+ readonly REQUIRE_VERIFIED_EMAIL: "require_verified_email";
23
+ readonly MAINTENANCE_MODE: "maintenance_mode";
24
+ readonly AUTH_METHODS: "auth_methods";
25
+ readonly EMAIL_CHANGE: "email_change";
26
+ readonly SECURITY_NOTIFICATIONS: "security_notifications";
27
+ readonly PASSWORD_HISTORY: "password_history";
28
+ readonly PASSWORD_EXPIRATION: "password_expiration";
29
+ readonly SESSION_POLICY: "session_policy";
30
+ readonly LOCKOUT: "lockout";
31
+ readonly RATE_LIMIT: "rate_limit";
32
+ readonly PASSWORD_POLICY: "password_policy";
33
+ readonly NOTIFICATIONS: "notifications";
34
+ readonly TRUSTED_DEVICES: "trusted_devices";
35
+ readonly TOKEN_TTL: "token_ttl";
36
+ readonly ADMIN_IMPERSONATION: "admin_impersonation";
37
+ readonly ORGANIZATIONS_POLICY: "organizations_policy";
38
+ readonly ROLES_CATALOG: "roles_catalog";
39
+ readonly OTP_LOCKOUT: "otp_lockout";
40
+ readonly SUDO_MODE: "sudo_mode";
41
+ readonly ACCOUNT_EXPIRATION: "account_expiration";
42
+ readonly KEY_ROTATION: "key_rotation";
43
+ };
44
+ export type SettingKey = (typeof SETTING_KEYS)[keyof typeof SETTING_KEYS];
45
+ /**
46
+ * Shape da setting `registration` em `auth_settings`.
47
+ *
48
+ * Quando `enabled: false`, o signup público é recusado (GET mostra mensagem;
49
+ * POST rejeita). Fluxos administrativos (admin create + org invite) continuam
50
+ * funcionando — eles NÃO passam por este guard.
51
+ */
52
+ export interface RegistrationSetting {
53
+ enabled: boolean;
54
+ }
55
+ /**
56
+ * Resolve o valor efetivo de "registration enabled" combinando a setting
57
+ * persistida em runtime com o config estático.
58
+ *
59
+ * Regras:
60
+ * - `config.registration?.enabled` pode estar em `ResolvedServerConfig`
61
+ * (quando o host o declara). Default: `true` (aberto por padrão).
62
+ * - setting presente → sobrescreve o default/config.
63
+ * - setting ausente/inválido/erro → usa configDefault.
64
+ *
65
+ * FAIL-SAFE: `getSetting` nunca lança (contrato do RuntimeSettings). Se
66
+ * retornar null, usamos configDefault.
67
+ */
68
+ export declare function resolveEffectiveRegistration(configDefault: boolean | undefined, settings: SettingsCapability): Promise<boolean>;
69
+ /**
70
+ * Shape da setting `require_verified_email` em `auth_settings`.
71
+ *
72
+ * Quando presente, sobrescreve `login.requireVerifiedEmail` do config estático
73
+ * para todos os três fluxos de login (senha, magic link, passkey-first).
74
+ *
75
+ * `graceDays` (opcional, default 0): conta NÃO verificada pode logar até
76
+ * `created_at + graceDays` dias. Após a janela, comporta-se como hoje (bloqueia).
77
+ * 0 = sem graça (comportamento original).
78
+ */
79
+ export interface RequireVerifiedEmailSetting {
80
+ enabled: boolean;
81
+ /** Dias de graça após o cadastro. Default: 0 (sem graça). */
82
+ graceDays?: number;
83
+ }
84
+ /** Resultado resolvido de `require_verified_email`. */
85
+ export interface ResolvedRequireVerifiedEmail {
86
+ enabled: boolean;
87
+ /** Dias de graça após o cadastro (0 = sem graça). */
88
+ graceDays: number;
89
+ }
90
+ /**
91
+ * Resolve o valor efetivo de `requireVerifiedEmail` combinando a setting
92
+ * persistida em runtime com o config estático.
93
+ *
94
+ * Regras (mesmas do `resolveEffectiveRegistration`):
95
+ * - configDefault vem de `cfg.login.requireVerifiedEmail` (default false).
96
+ * - setting presente → sobrescreve.
97
+ * - setting ausente/inválido/erro → usa configDefault.
98
+ */
99
+ export declare function resolveEffectiveRequireVerifiedEmail(configDefault: boolean | undefined, settings: SettingsCapability): Promise<boolean>;
100
+ /**
101
+ * Resolve o valor efetivo COMPLETO de `require_verified_email` incluindo
102
+ * `graceDays`. Usado pelo gate de login para implementar a janela de graça.
103
+ *
104
+ * FAIL-SAFE: qualquer erro → `{ enabled: configDefault, graceDays: 0 }`.
105
+ */
106
+ export declare function resolveEffectiveRequireVerifiedEmailFull(configDefault: boolean | undefined, settings: SettingsCapability): Promise<ResolvedRequireVerifiedEmail>;
107
+ /**
108
+ * Shape da setting `maintenance_mode` em `auth_settings`.
109
+ *
110
+ * Quando `enabled: true`:
111
+ * - Telas de login/signup/forgot/interaction mostram página de manutenção.
112
+ * - POSTs desses fluxos rejeitam (503-like / redirect para manutenção).
113
+ * - Fluxos de token OIDC já autenticados (refresh, introspection, userinfo)
114
+ * CONTINUAM funcionando — não derrubamos sessões existentes.
115
+ * - Admin API e console admin continuam acessíveis.
116
+ * - Login de contas com role admin (conforme `cfg.admin.roles`) CONTINUA
117
+ * PERMITIDO — senão o operador se tranca fora. Contas comuns são bloqueadas.
118
+ *
119
+ * `message` é exibida na página de manutenção. Quando ausente, usa i18n default.
120
+ *
121
+ * @remarks LOCKOUT SAFETY
122
+ * O login admin continua funcionando durante a manutenção (verificado pela
123
+ * role da conta). Se por qualquer razão o console admin não estiver acessível
124
+ * via browser (ex.: infra), o operador pode desligar a manutenção via Admin
125
+ * REST API (PUT /api/authkit/v1/settings/maintenance_mode) sem precisar fazer
126
+ * login. A Admin API usa API-key authentication, imune ao modo manutenção.
127
+ */
128
+ export interface MaintenanceModeSetting {
129
+ enabled: boolean;
130
+ /** Mensagem custom exibida na tela de manutenção. Opcional. */
131
+ message?: string;
132
+ }
133
+ /** Resultado resolvido do maintenance mode, pronto para consumo pelos controllers. */
134
+ export interface ResolvedMaintenanceMode {
135
+ enabled: boolean;
136
+ message?: string;
137
+ }
138
+ /**
139
+ * Resolve o estado efetivo do maintenance mode a partir da setting persistida.
140
+ *
141
+ * Regras:
142
+ * - setting ausente/inválido/erro DB → `{ enabled: false }` (default: sistema UP).
143
+ * - setting presente → usa o valor da setting.
144
+ *
145
+ * FAIL-SAFE: qualquer erro → sistema considerado UP (disponibilidade > proteção).
146
+ */
147
+ export declare function resolveEffectiveMaintenanceMode(settings: SettingsCapability): Promise<ResolvedMaintenanceMode>;
148
+ /**
149
+ * Shape da setting `auth_methods` em `auth_settings`.
150
+ *
151
+ * Controla quais métodos de login a tela oferece em runtime. Todos os campos
152
+ * são opcionais — campos ausentes são derivados do config/capabilities.
153
+ *
154
+ * @remarks
155
+ * - `password`: exibe o formulário de senha. Default: true.
156
+ * - `magicLink`: exibe o botão "me envie um link de login". Default: true
157
+ * se o mail/store suportam.
158
+ * - `passkey`: exibe o botão "entrar com passkey" (passkey-first).
159
+ * Default: true se webauthn configurado e conta tem passkeys.
160
+ * - `social`: lista dos providers sociais a exibir. Default: todos os
161
+ * providers configurados em `config.social.providers`.
162
+ * A setting só pode FILTRAR (não ATIVAR) providers; providers
163
+ * não presentes no config nunca aparecem.
164
+ * - `forgotPassword`: exibe o link "esqueci minha senha". Default: true.
165
+ * AUTO-DERIVADO: sempre false quando `password` efetivo é false.
166
+ */
167
+ export interface AuthMethodsSetting {
168
+ password?: boolean;
169
+ magicLink?: boolean;
170
+ passkey?: boolean;
171
+ social?: string[];
172
+ forgotPassword?: boolean;
173
+ /**
174
+ * Habilita WebAuthn conditional mediation (autofill) na tela de login.
175
+ * Quando true (default quando passkey on), o input de e-mail exibe sugestões
176
+ * de passkey direto no autofill do browser (discoverable credentials).
177
+ * Fail-safe: browsers sem suporte ou abort → silêncio (login normal segue).
178
+ * Default: true (quando passkey habilitado).
179
+ */
180
+ passkeyAutofill?: boolean;
181
+ }
182
+ /**
183
+ * Resultado resolvido dos métodos de autenticação, pronto para consumo pelas views.
184
+ */
185
+ export interface ResolvedAuthMethods {
186
+ password: boolean;
187
+ magicLink: boolean;
188
+ passkey: boolean;
189
+ social: string[];
190
+ forgotPassword: boolean;
191
+ /** WebAuthn conditional mediation ativa (autofill de passkey no input de e-mail). */
192
+ passkeyAutofill: boolean;
193
+ }
194
+ /**
195
+ * Capabilities de runtime necessárias para derivar os defaults de auth_methods.
196
+ * Campos opcionais — quando ausentes, assume defaults conservadores.
197
+ */
198
+ export interface AuthMethodsCapabilities {
199
+ /** Providers sociais configurados no config estático. */
200
+ configuredSocialProviders?: string[];
201
+ /** Magic link disponível (config.passwordless.magicLink && store.issueMagicLinkToken). */
202
+ magicLinkCapable?: boolean;
203
+ /** Passkey-first disponível (config.passwordless.passkeyFirst && store tem passkeys). */
204
+ passkeyCapable?: boolean;
205
+ }
206
+ /**
207
+ * Resolve os métodos de autenticação efetivos combinando config estático + setting
208
+ * persistida em runtime + capabilities.
209
+ *
210
+ * Regras:
211
+ * 1. Defaults derivados do config/capabilities.
212
+ * 2. Setting presente → sobrescreve campo a campo.
213
+ * 3. DERIVAÇÃO: `forgotPassword` efetivo = (setting.forgotPassword ?? true) && passwordEnabled.
214
+ * Sem método senha ativo, "esqueci minha senha" NUNCA aparece.
215
+ * 4. `social` efetivo = interseção do setting.social com os providers do config.
216
+ * Setting não pode LIGAR provider que o código não tem.
217
+ * 5. FAIL-SAFE all-off: se todos os métodos ficarem desligados, volta ao derivado
218
+ * do config (nunca deixar a tela sem nenhum método). Loga um aviso (console.warn).
219
+ * 6. Qualquer erro DB → defaults derivados do config (fail-safe total).
220
+ */
221
+ export declare function resolveEffectiveAuthMethods(settings: SettingsCapability, capabilities?: AuthMethodsCapabilities): Promise<ResolvedAuthMethods>;
222
+ /**
223
+ * Shape da setting `email_change` em `auth_settings`.
224
+ *
225
+ * Controla o fluxo de troca de e-mail verificada em runtime:
226
+ * - `enabled`: habilita/desabilita o fluxo. Default: true (se a capability presente).
227
+ * - `ttlHours`: duração do token de confirmação em horas. Default: 24.
228
+ * - `requirePassword`: exige senha atual para iniciar a troca. Default: true.
229
+ */
230
+ export interface EmailChangeSetting {
231
+ enabled?: boolean;
232
+ ttlHours?: number;
233
+ requirePassword?: boolean;
234
+ }
235
+ /** Resultado resolvido da setting email_change. */
236
+ export interface ResolvedEmailChangeSetting {
237
+ enabled: boolean;
238
+ ttlHours: number;
239
+ requirePassword: boolean;
240
+ }
241
+ /**
242
+ * Resolve as configurações efetivas de troca de e-mail, combinando a setting
243
+ * persistida em runtime com defaults.
244
+ *
245
+ * FAIL-SAFE: qualquer erro → defaults (enabled true, 24h, requirePassword true).
246
+ */
247
+ export declare function resolveEffectiveEmailChange(settings: SettingsCapability): Promise<ResolvedEmailChangeSetting>;
248
+ /**
249
+ * Tipos de evento de segurança que disparam notificação por e-mail.
250
+ */
251
+ export type SecurityNotificationKind = 'password_changed' | 'mfa_enabled' | 'mfa_disabled' | 'passkey_added' | 'passkey_removed' | 'email_changed';
252
+ /** Todos os tipos de notificação de segurança suportados. */
253
+ export declare const ALL_SECURITY_NOTIFICATION_KINDS: SecurityNotificationKind[];
254
+ /**
255
+ * Shape da setting `security_notifications` em `auth_settings`.
256
+ *
257
+ * - `enabled`: habilita/desabilita todas as notificações. Default: true.
258
+ * - `kinds`: lista dos tipos de evento a notificar. Default: todos.
259
+ */
260
+ export interface SecurityNotificationsSetting {
261
+ enabled?: boolean;
262
+ kinds?: string[];
263
+ }
264
+ /** Resultado resolvido das notificações de segurança. */
265
+ export interface ResolvedSecurityNotifications {
266
+ enabled: boolean;
267
+ kinds: SecurityNotificationKind[];
268
+ }
269
+ /**
270
+ * Resolve as notificações de segurança efetivas, combinando a setting
271
+ * persistida em runtime com defaults.
272
+ *
273
+ * FAIL-SAFE: qualquer erro → defaults (enabled true, todos os kinds).
274
+ */
275
+ export declare function resolveEffectiveSecurityNotifications(settings: SettingsCapability): Promise<ResolvedSecurityNotifications>;
276
+ /**
277
+ * Shape da setting `password_history` em `auth_settings`.
278
+ *
279
+ * Quando `enabled: true` E a tabela `auth_password_history` existe (capability-
280
+ * probed), a aplicação verifica os últimos `count` hashes ANTES de aceitar uma
281
+ * nova senha e rejeita reutilização.
282
+ *
283
+ * Sem tabela → setting sem efeito; doctor explica o schema necessário.
284
+ */
285
+ export interface PasswordHistorySetting {
286
+ enabled?: boolean;
287
+ /** Quantos hashes anteriores verificar. Default: 5. */
288
+ count?: number;
289
+ }
290
+ /** Resultado resolvido de `password_history`. */
291
+ export interface ResolvedPasswordHistory {
292
+ enabled: boolean;
293
+ /** Quantos hashes anteriores verificar (>= 1). */
294
+ count: number;
295
+ }
296
+ /**
297
+ * Resolve as configurações efetivas de histórico de senhas.
298
+ *
299
+ * FAIL-SAFE: qualquer erro → `{ enabled: false, count: 5 }`.
300
+ */
301
+ export declare function resolveEffectivePasswordHistory(settings: SettingsCapability): Promise<ResolvedPasswordHistory>;
302
+ /**
303
+ * Shape da setting `session_policy` em `auth_settings`.
304
+ *
305
+ * Controla o comportamento da sessão SSO do oidc-provider e da sessão do console
306
+ * de conta em runtime, sem necessidade de redeploy.
307
+ *
308
+ * ### remember-me
309
+ * Quando `rememberEnabled: true` (default), a tela de login exibe o checkbox
310
+ * "manter conectado". Marcado → sessão persistente por `rememberDays` dias.
311
+ * Desmarcado → sessão transiente (cookie expires ao fechar o browser) com duração
312
+ * máxima de `defaultSessionHours` horas.
313
+ *
314
+ * ### single session
315
+ * Quando `singleSession: true`, após um login bem-sucedido TODAS as outras sessões
316
+ * OIDC da conta são revogadas (grants + tokens cascateados). A sessão RECÉM-CRIADA
317
+ * é preservada. Auditado como `session.single_enforced`.
318
+ *
319
+ * ### idle timeout
320
+ * Quando `idleTimeoutMinutes > 0`, o console de conta (e o console admin) registra
321
+ * o timestamp da última atividade (`authkit_last_seen`) na sessão Adonis. A cada
322
+ * request autenticado, se a inatividade exceder o limite, a sessão é encerrada e o
323
+ * usuário é redirecionado ao login com uma mensagem i18n. Apenas o console de conta
324
+ * é coberto — o lado OIDC (refresh tokens) tem vida própria e está fora de escopo.
325
+ *
326
+ * @remarks
327
+ * A duração da sessão OIDC é controlada pelo TTL do oidc-provider, que é uma função
328
+ * configurada em build_provider.ts e lê esta setting via um holder mutável atualizado
329
+ * a cada save/reset desta setting. O TTL é **síncrono** no oidc-provider — não podemos
330
+ * fazer leituras de DB no path. O holder é atualizado de forma assíncrona (após write)
331
+ * e cacheado; num restart sem setting persistida, o provider usa o config estático.
332
+ */
333
+ export interface SessionPolicySetting {
334
+ /** Exibe checkbox "manter conectado" na tela de login. Default: true. */
335
+ rememberEnabled?: boolean;
336
+ /** Duração da sessão quando "manter conectado" está marcado (dias). Default: 30. */
337
+ rememberDays?: number;
338
+ /**
339
+ * Duração máxima da sessão quando "manter conectado" NÃO está marcado (horas).
340
+ * Default: derivado de `config.ttl.session` em horas (default 168 h = 7 dias).
341
+ * Independente do remember, a sessão OIDC nunca excede este valor quando transiente.
342
+ */
343
+ defaultSessionHours?: number;
344
+ /** Força sessão única por conta: revoga outras sessões no login. Default: false. */
345
+ singleSession?: boolean;
346
+ /**
347
+ * Timeout de inatividade do console de conta (minutos). 0 = desligado. Default: 0.
348
+ * O idle é rastreado pela sessão Adonis; não cobre o lado OIDC (tokens independentes).
349
+ */
350
+ idleTimeoutMinutes?: number;
351
+ }
352
+ /** Resultado resolvido de `session_policy`. */
353
+ export interface ResolvedSessionPolicy {
354
+ rememberEnabled: boolean;
355
+ rememberDays: number;
356
+ defaultSessionHours: number;
357
+ singleSession: boolean;
358
+ idleTimeoutMinutes: number;
359
+ }
360
+ /** Defaults da session_policy quando a setting não existe. */
361
+ export declare const SESSION_POLICY_DEFAULTS: ResolvedSessionPolicy;
362
+ /**
363
+ * Resolve as configurações efetivas de session policy.
364
+ *
365
+ * FAIL-SAFE: qualquer erro → defaults (comportamento original intacto).
366
+ *
367
+ * @param configDefaultSessionHours Horas derivadas de `config.ttl.session` (em segundos → horas).
368
+ * Quando ausente, usa 168 h (7 dias = padrão do oidc-provider).
369
+ */
370
+ export declare function resolveEffectiveSessionPolicy(settings: SettingsCapability, configDefaultSessionHours?: number): Promise<ResolvedSessionPolicy>;
371
+ /**
372
+ * Shape da setting `password_expiration` em `auth_settings`.
373
+ *
374
+ * Quando `enabled: true` E a coluna `password_changed_at` existe (capability-
375
+ * probed), força a troca de senha no login após `maxAgeDays` dias sem trocar.
376
+ *
377
+ * Sem coluna → setting sem efeito; doctor explica a migração necessária.
378
+ */
379
+ export interface PasswordExpirationSetting {
380
+ enabled?: boolean;
381
+ /** Máximo de dias desde a última troca. Default: 90. */
382
+ maxAgeDays?: number;
383
+ }
384
+ /** Resultado resolvido de `password_expiration`. */
385
+ export interface ResolvedPasswordExpiration {
386
+ enabled: boolean;
387
+ /** Máximo de dias desde a última troca (>= 1). */
388
+ maxAgeDays: number;
389
+ }
390
+ /**
391
+ * Resolve as configurações efetivas de expiração de senha.
392
+ *
393
+ * FAIL-SAFE: qualquer erro → `{ enabled: false, maxAgeDays: 90 }`.
394
+ */
395
+ export declare function resolveEffectivePasswordExpiration(settings: SettingsCapability): Promise<ResolvedPasswordExpiration>;
396
+ /**
397
+ * Shape da setting `lockout` em `auth_settings`.
398
+ *
399
+ * Controla a política de bloqueio progressivo de conta em runtime. Os campos de
400
+ * política (enabled, maxAttempts, windowSec, baseLockoutSec, maxLockoutSec) são
401
+ * gerenciados aqui; o campo `store` do config estático é infra e NÃO é movido.
402
+ *
403
+ * FALLBACK: campos ausentes caem nos valores do `config.lockout` (via
404
+ * `configDefault`) ou nos defaults da lib.
405
+ */
406
+ export interface LockoutSetting {
407
+ enabled?: boolean;
408
+ maxAttempts?: number;
409
+ windowSec?: number;
410
+ baseLockoutSec?: number;
411
+ maxLockoutSec?: number;
412
+ }
413
+ /** Resultado resolvido de `lockout` (política apenas; store vem do config estático). */
414
+ export interface ResolvedLockoutSetting {
415
+ enabled: boolean;
416
+ maxAttempts: number;
417
+ windowSec: number;
418
+ baseLockoutSec: number;
419
+ maxLockoutSec: number;
420
+ }
421
+ /** Config default de lockout (valores que chegam do config estático). */
422
+ export interface LockoutConfigDefaults {
423
+ enabled?: boolean;
424
+ maxAttempts?: number;
425
+ windowSec?: number;
426
+ baseLockoutSec?: number;
427
+ maxLockoutSec?: number;
428
+ }
429
+ /**
430
+ * Resolve as configurações efetivas de lockout.
431
+ *
432
+ * Precedência: setting BD → configDefault → lib default.
433
+ * FAIL-SAFE: qualquer erro → configDefault (ou lib defaults).
434
+ */
435
+ export declare function resolveEffectiveLockout(settings: SettingsCapability, configDefault?: LockoutConfigDefaults): Promise<ResolvedLockoutSetting>;
436
+ /**
437
+ * Shape do bucket de rate-limit.
438
+ */
439
+ export interface RateLimitBucketSetting {
440
+ points?: number;
441
+ duration?: string;
442
+ }
443
+ /**
444
+ * Shape da setting `rate_limit` em `auth_settings`.
445
+ *
446
+ * LIMITAÇÃO CONHECIDA: O throttle do `@adonisjs/limiter` é construído NO
447
+ * REGISTRO DA ROTA (boot-time) com os valores da config estática. O oidc-provider
448
+ * e o Adonis não permitem alterar middlewares de rota em runtime. Por isso, os
449
+ * valores de `rate_limit` da setting SÃO LIDOS pelo AccountLockout e pelo
450
+ * middleware de throttle via função utilitária que é chamada por request, mas
451
+ * APENAS no caminho do lockout/bloqueio — o middleware de throttle por IP (que
452
+ * usa `@adonisjs/limiter` diretamente) CONTINUA usando a config estática.
453
+ * Para throttle dinâmico verdadeiro, reconfigure e reinicie o servidor.
454
+ *
455
+ * Em termos práticos: `login.points`/`duration` e `introspection.points`/`duration`
456
+ * AFETAM o comportamento do lockout (AccountLockout, que usa o limiter diretamente),
457
+ * MAS o middleware de throttle de rota fica com a config de boot.
458
+ *
459
+ * @see resolveEffectiveRateLimit
460
+ */
461
+ export interface RateLimitSetting {
462
+ login?: RateLimitBucketSetting;
463
+ introspection?: RateLimitBucketSetting;
464
+ }
465
+ /** Resultado resolvido do rate_limit (somente os buckets de política). */
466
+ export interface ResolvedRateLimitSetting {
467
+ login: {
468
+ points: number;
469
+ duration: string;
470
+ };
471
+ introspection: {
472
+ points: number;
473
+ duration: string;
474
+ };
475
+ }
476
+ export interface RateLimitConfigDefaults {
477
+ login?: {
478
+ points?: number;
479
+ duration?: string;
480
+ };
481
+ introspection?: {
482
+ points?: number;
483
+ duration?: string;
484
+ };
485
+ }
486
+ /**
487
+ * Resolve as configurações efetivas dos buckets de rate-limit.
488
+ *
489
+ * Precedência: setting BD → configDefault → lib default.
490
+ * FAIL-SAFE: qualquer erro → configDefault.
491
+ *
492
+ * NOTA: o middleware de throttle de rota (Adonis) usa os valores do config de
493
+ * boot e NÃO é afetado por esta setting em runtime. Veja JSDoc de RateLimitSetting.
494
+ */
495
+ export declare function resolveEffectiveRateLimit(settings: SettingsCapability, configDefault?: RateLimitConfigDefaults): Promise<ResolvedRateLimitSetting>;
496
+ /**
497
+ * Shape da setting `password_policy` em `auth_settings`.
498
+ *
499
+ * Controla as regras de complexidade de senha e checagem de vazamento.
500
+ * Os campos `legacyVerifier`, `pepper` e `timeoutMs` do config estático são
501
+ * infra/código e NÃO são movidos para a setting.
502
+ *
503
+ * FALLBACK: campos ausentes caem nos valores do `config.accountStore` password
504
+ * config (via `configDefault`) ou nos defaults da lib.
505
+ */
506
+ export interface PasswordPolicySetting {
507
+ minLength?: number;
508
+ requireUppercase?: boolean;
509
+ requireLowercase?: boolean;
510
+ requireNumbers?: boolean;
511
+ requireSymbols?: boolean;
512
+ /** Verifica se a senha aparece em vazamentos (HaveIBeenPwned, k-anonymity). */
513
+ checkPwned?: boolean;
514
+ /**
515
+ * Rejeita senhas que constam na lista offline de ~10 000 senhas mais comuns.
516
+ * A checagem é case-insensitive e roda ANTES do HIBP (mais barata).
517
+ * Default: true.
518
+ */
519
+ blockCommon?: boolean;
520
+ }
521
+ /** Resultado resolvido da password_policy. */
522
+ export interface ResolvedPasswordPolicySetting {
523
+ minLength: number;
524
+ requireUppercase: boolean;
525
+ requireLowercase: boolean;
526
+ requireNumbers: boolean;
527
+ requireSymbols: boolean;
528
+ checkPwned: boolean;
529
+ /** Rejeita senhas da lista offline de senhas comuns. Default: true. */
530
+ blockCommon: boolean;
531
+ }
532
+ export interface PasswordPolicyConfigDefaults {
533
+ minLength?: number;
534
+ requireUppercase?: boolean;
535
+ requireLowercase?: boolean;
536
+ requireNumbers?: boolean;
537
+ requireSymbols?: boolean;
538
+ checkPwned?: boolean;
539
+ blockCommon?: boolean;
540
+ }
541
+ /**
542
+ * Resolve as configurações efetivas de política de senha.
543
+ *
544
+ * Precedência: setting BD → configDefault → lib default.
545
+ * FAIL-SAFE: qualquer erro → configDefault.
546
+ */
547
+ export declare function resolveEffectivePasswordPolicy(settings: SettingsCapability, configDefault?: PasswordPolicyConfigDefaults): Promise<ResolvedPasswordPolicySetting>;
548
+ /**
549
+ * Shape da setting `notifications` em `auth_settings`.
550
+ *
551
+ * Controla se e-mails de alerta de novo acesso e novo dispositivo são enviados.
552
+ * FALLBACK: campos ausentes caem nos valores do `config.notifications`.
553
+ */
554
+ export interface NotificationsSetting {
555
+ newLoginEmail?: boolean;
556
+ newDeviceEmail?: boolean;
557
+ }
558
+ /** Resultado resolvido de `notifications`. */
559
+ export interface ResolvedNotificationsSetting {
560
+ newLoginEmail: boolean;
561
+ newDeviceEmail: boolean;
562
+ }
563
+ export interface NotificationsConfigDefaults {
564
+ newLoginEmail?: boolean;
565
+ newDeviceEmail?: boolean;
566
+ }
567
+ /**
568
+ * Resolve as configurações efetivas de notificações de acesso/dispositivo.
569
+ *
570
+ * Precedência: setting BD → configDefault → lib default (true/true).
571
+ * FAIL-SAFE: qualquer erro → configDefault.
572
+ */
573
+ export declare function resolveEffectiveNotifications(settings: SettingsCapability, configDefault?: NotificationsConfigDefaults): Promise<ResolvedNotificationsSetting>;
574
+ /**
575
+ * Shape da setting `trusted_devices` em `auth_settings`.
576
+ *
577
+ * Controla a POLÍTICA de dispositivos confiáveis (enabled, days). Os campos de
578
+ * infra (cookie name, segredos) continuam no config estático.
579
+ *
580
+ * FALLBACK: campos ausentes caem nos valores do `config.trustedDevices`.
581
+ */
582
+ export interface TrustedDevicesSetting {
583
+ enabled?: boolean;
584
+ days?: number;
585
+ }
586
+ /** Resultado resolvido de `trusted_devices` (política). */
587
+ export interface ResolvedTrustedDevicesSetting {
588
+ enabled: boolean;
589
+ days: number;
590
+ }
591
+ export interface TrustedDevicesConfigDefaults {
592
+ enabled?: boolean;
593
+ days?: number;
594
+ }
595
+ /**
596
+ * Resolve as configurações efetivas de trusted devices.
597
+ *
598
+ * Precedência: setting BD → configDefault → lib default (enabled=true, days=30).
599
+ * FAIL-SAFE: qualquer erro → configDefault.
600
+ */
601
+ export declare function resolveEffectiveTrustedDevices(settings: SettingsCapability, configDefault?: TrustedDevicesConfigDefaults): Promise<ResolvedTrustedDevicesSetting>;
602
+ /**
603
+ * Shape da setting `token_ttl` em `auth_settings`.
604
+ *
605
+ * Controla os TTLs dos tokens OIDC em runtime via holders mutáveis (mesmo padrão
606
+ * do session_policy / sessionTtlHolder). Os holders são atualizados de forma
607
+ * SÍNCRONA após um write/reset da setting — o oidc-provider lê os TTL functions
608
+ * de forma síncrona, portanto os valores ficam disponíveis sem redeploy.
609
+ *
610
+ * Valores em SEGUNDOS. Campos ausentes caem nos valores do `config.ttl`.
611
+ *
612
+ * NOTA: session TTL JÁ é dinâmico via session_policy — NÃO duplique aqui.
613
+ */
614
+ export interface TokenTtlSetting {
615
+ accessTokenSec?: number;
616
+ idTokenSec?: number;
617
+ refreshTokenSec?: number;
618
+ }
619
+ /** Resultado resolvido de `token_ttl`. */
620
+ export interface ResolvedTokenTtlSetting {
621
+ accessTokenSec: number;
622
+ idTokenSec: number;
623
+ refreshTokenSec: number;
624
+ }
625
+ export interface TokenTtlConfigDefaults {
626
+ accessTokenSec?: number;
627
+ idTokenSec?: number;
628
+ refreshTokenSec?: number;
629
+ }
630
+ /**
631
+ * Resolve as configurações efetivas de TTL de tokens.
632
+ *
633
+ * Precedência: setting BD → configDefault → lib default (900s/900s/2592000s).
634
+ * FAIL-SAFE: qualquer erro → configDefault.
635
+ */
636
+ export declare function resolveEffectiveTokenTtl(settings: SettingsCapability, configDefault?: TokenTtlConfigDefaults): Promise<ResolvedTokenTtlSetting>;
637
+ /**
638
+ * Shape da setting `admin_impersonation` em `auth_settings`.
639
+ *
640
+ * Controla se o painel de impersonation (RFC 8693 token exchange) é exibido no
641
+ * console admin. FALLBACK: campo ausente cai em `config.admin.impersonation`.
642
+ */
643
+ export interface AdminImpersonationSetting {
644
+ enabled?: boolean;
645
+ }
646
+ /** Resultado resolvido de `admin_impersonation`. */
647
+ export interface ResolvedAdminImpersonationSetting {
648
+ enabled: boolean;
649
+ }
650
+ /**
651
+ * Resolve as configurações efetivas de impersonation.
652
+ *
653
+ * Precedência: setting BD → configDefault → lib default (false).
654
+ * FAIL-SAFE: qualquer erro → configDefault.
655
+ */
656
+ export declare function resolveEffectiveAdminImpersonation(settings: SettingsCapability, configDefault?: boolean): Promise<ResolvedAdminImpersonationSetting>;
657
+ /**
658
+ * Shape da setting `organizations_policy` em `auth_settings`.
659
+ *
660
+ * Controla as POLÍTICAS de organizações em runtime (allowSelfCreate,
661
+ * invitationTtlHours, roles). O campo `enabled` da capability e a derivação de
662
+ * tabelas ficam no config estático / capability-probing. FALLBACK: campos
663
+ * ausentes caem nos valores do `config.organizations`.
664
+ */
665
+ export interface OrganizationsPolicySetting {
666
+ allowSelfCreate?: boolean;
667
+ invitationTtlHours?: number;
668
+ roles?: string[];
669
+ }
670
+ /** Resultado resolvido de `organizations_policy`. */
671
+ export interface ResolvedOrganizationsPolicySetting {
672
+ allowSelfCreate: boolean;
673
+ invitationTtlHours: number;
674
+ roles: string[];
675
+ }
676
+ export interface OrganizationsPolicyConfigDefaults {
677
+ allowSelfCreate?: boolean;
678
+ invitationTtlHours?: number;
679
+ roles?: string[];
680
+ }
681
+ /**
682
+ * Uma entrada do catálogo de roles globais.
683
+ */
684
+ export interface RoleCatalogEntry {
685
+ /** Nome da role — maiúsculas e underscores (ex.: ADMIN, EDITOR). */
686
+ name: string;
687
+ /** Descrição legível (opcional). */
688
+ description?: string;
689
+ }
690
+ /**
691
+ * Shape da setting `roles_catalog` em `auth_settings`.
692
+ *
693
+ * Catálogo de roles globais disponíveis para atribuição a usuários no console
694
+ * admin. O catálogo substitui o campo de texto livre na página de usuários por
695
+ * checkboxes derivadas deste catálogo.
696
+ *
697
+ * INVARIANTE: `ADMIN` é sempre garantido no catálogo (merge defensivo) — é o
698
+ * gate do console admin (cfg.admin.roles default ['ADMIN']).
699
+ */
700
+ export interface RolesCatalogSetting {
701
+ roles: RoleCatalogEntry[];
702
+ }
703
+ /** Resultado resolvido do catálogo de roles, ordenado por nome. */
704
+ export interface ResolvedRolesCatalog {
705
+ roles: RoleCatalogEntry[];
706
+ }
707
+ /** Default da lib: apenas ADMIN. */
708
+ export declare const ROLES_CATALOG_DEFAULT: ResolvedRolesCatalog;
709
+ /**
710
+ * Resolve o catálogo efetivo de roles globais a partir da setting persistida.
711
+ *
712
+ * Regras:
713
+ * - ADMIN é SEMPRE garantido no resultado (merge defensivo — é o gate do console).
714
+ * - setting ausente/inválida/erro → default (apenas ADMIN).
715
+ * - O resultado é ordenado por nome (ADMIN sempre incluído).
716
+ * - Entradas com `name` inválido (não-string ou vazio) são descartadas silenciosamente.
717
+ *
718
+ * FAIL-SAFE: qualquer erro DB → default.
719
+ */
720
+ /**
721
+ * Resolve roles catalog efetivo: org → global → default.
722
+ *
723
+ * @param settings - SettingsCapability
724
+ * @param orgId - opcional; quando fornecido, tenta settings da org antes do global
725
+ */
726
+ export declare function resolveEffectiveRolesCatalog(settings: SettingsCapability, orgId?: string | null): Promise<ResolvedRolesCatalog>;
727
+ /**
728
+ * Resolve as configurações efetivas de política de organizações.
729
+ *
730
+ * Precedência: org-setting → global-setting → configDefault → lib default.
731
+ * FAIL-SAFE: qualquer erro → configDefault.
732
+ *
733
+ * Invariante mantida: 'owner' é sempre incluído na lista de roles (governance).
734
+ *
735
+ * @param settings - SettingsCapability
736
+ * @param configDefault - defaults estáticos do config do host
737
+ * @param orgId - opcional; quando fornecido, tenta settings da org antes do global
738
+ */
739
+ export declare function resolveEffectiveOrganizationsPolicy(settings: SettingsCapability, configDefault?: OrganizationsPolicyConfigDefaults, orgId?: string | null): Promise<ResolvedOrganizationsPolicySetting>;
740
+ /**
741
+ * Resolve o CATÁLOGO efetivo de roles de org (lista de roles permitidas),
742
+ * garantindo a invariante de governance: `owner` está sempre presente.
743
+ *
744
+ * Layer canônico de validação de role de org, compartilhado entre o caminho
745
+ * admin (`AdminOrgsService.resolveRoleCatalog`) e o member-facing
746
+ * (`account_orgs_controller`). Fail-safe: sem `settings` (null), usa o catálogo
747
+ * do config estático (mesma semântica do `resolveEffectiveOrganizationsPolicy`
748
+ * com `settings` indisponível — que cai nos `configDefault`).
749
+ *
750
+ * @param settings - SettingsCapability ou null (null → só config defaults)
751
+ * @param configDefault - defaults estáticos do config do host
752
+ * @param orgId - opcional; quando fornecido, tenta settings da org antes do global
753
+ */
754
+ export declare function resolveRoleCatalogList(settings: SettingsCapability | null, configDefault?: OrganizationsPolicyConfigDefaults, orgId?: string | null): Promise<string[]>;
755
+ /**
756
+ * Função PURA: valida se um `role` faz parte do catálogo efetivo de roles de org.
757
+ *
758
+ * É o único ponto de verdade para "esta role é válida para esta org?", reusado
759
+ * tanto pelo caminho admin quanto pelo member-facing — eliminando a
760
+ * reimplementação inline `policy.roles.includes(role)` que vivia em dois layers.
761
+ * H4: bloqueia roles fora do catálogo (incluindo arbitrárias e, quando não
762
+ * catalogadas, `owner`). Fail-safe via {@link resolveRoleCatalogList}.
763
+ *
764
+ * @param role - role candidata
765
+ * @param settings - SettingsCapability ou null
766
+ * @param configDefault - defaults estáticos do config do host
767
+ * @param orgId - opcional; escopo de org para a resolução do catálogo
768
+ */
769
+ export declare function isRoleInCatalog(role: string, settings: SettingsCapability | null, configDefault?: OrganizationsPolicyConfigDefaults, orgId?: string | null): Promise<boolean>;
770
+ /**
771
+ * Shape da setting `account_expiration` em `auth_settings`.
772
+ *
773
+ * Quando `enabled: true` E o audit suporta `list` (capability-probed):
774
+ * - O login de contas inativas (sem `login.success` há mais de `inactiveDays`
775
+ * dias) é BLOQUEADO com mensagem i18n clara e auditado como
776
+ * `account.expired_login_blocked`. A reativação se dá via reset de senha
777
+ * (link exibido na mensagem de erro) — um reset bem-sucedido registra
778
+ * atividade e reativa implicitamente.
779
+ * - Comando de varredura `authkit:accounts:expire-scan` (cron do host):
780
+ * reporta expiradas e "a expirar em warnDays dias"; com `--warn` envia
781
+ * e-mail de aviso via hook `mail.onAccountExpirationWarning` (deduplicado
782
+ * via audit `account.expiration_warned` na janela de `warnDays` dias).
783
+ *
784
+ * SEM audit queryável → feature indisponível (no-op + doctor explica).
785
+ * SEM coluna nova — "última atividade" = último `login.success` no audit.
786
+ *
787
+ * FAIL-SAFE: qualquer erro → `{ enabled: false, inactiveDays: 365, warnDays: 14 }`.
788
+ */
789
+ export interface AccountExpirationSetting {
790
+ enabled?: boolean;
791
+ /** Dias de inatividade para expirar. Default: 365. */
792
+ inactiveDays?: number;
793
+ /** Dias de antecipação para enviar aviso. Default: 14. */
794
+ warnDays?: number;
795
+ }
796
+ /** Resultado resolvido de `account_expiration`. */
797
+ export interface ResolvedAccountExpiration {
798
+ enabled: boolean;
799
+ inactiveDays: number;
800
+ warnDays: number;
801
+ }
802
+ /**
803
+ * Resolve as configurações efetivas de expiração de conta.
804
+ *
805
+ * FAIL-SAFE: qualquer erro → `{ enabled: false, inactiveDays: 365, warnDays: 14 }`.
806
+ */
807
+ export declare function resolveEffectiveAccountExpiration(settings: SettingsCapability): Promise<ResolvedAccountExpiration>;