@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,351 @@
1
+ import { configProvider } from "@adonisjs/core";
2
+ import { generateJwks } from "./keys/jwks_manager.js";
3
+ import { KeystoreManager, resolveKeystoreVault, } from "./keys/keystore_manager.js";
4
+ import { KeystoreCodec } from "./keys/keystore_codec.js";
5
+ import { loadEncryptionService } from "./keys/keystore_crypto.js";
6
+ import { adapters, } from "./adapters/factory.js";
7
+ import { composeAuditSink, resolveEvents, } from "./events/dispatcher.js";
8
+ import { resolveMessages, } from "./host/i18n.js";
9
+ import { resolveTrustedDevices, } from "./host/trusted_device.js";
10
+ import { resolveBotProtection, } from "./host/bot_protection.js";
11
+ import { deriveLockedSettingKeys } from "./host/config_locks.js";
12
+ export { adapters };
13
+ const RATE_LIMIT_DEFAULTS = {
14
+ login: { points: 10, duration: "1 min" },
15
+ introspection: { points: 60, duration: "1 min" },
16
+ adminIp: { points: 30, duration: "1 min" },
17
+ };
18
+ export function resolveRateLimit(input) {
19
+ const enabled = input?.enabled ?? true;
20
+ return {
21
+ enabled,
22
+ login: RATE_LIMIT_DEFAULTS.login,
23
+ introspection: RATE_LIMIT_DEFAULTS.introspection,
24
+ adminIp: RATE_LIMIT_DEFAULTS.adminIp,
25
+ store: input?.store,
26
+ };
27
+ }
28
+ export function resolveLockout(input) {
29
+ return {
30
+ enabled: true,
31
+ maxAttempts: 5,
32
+ windowSec: 900,
33
+ baseLockoutSec: 60,
34
+ maxLockoutSec: 3600,
35
+ store: input?.store,
36
+ };
37
+ }
38
+ export function resolveNotifications() {
39
+ return {
40
+ newLoginEmail: true,
41
+ newDeviceEmail: true,
42
+ };
43
+ }
44
+ /**
45
+ * Resolve a config de registro dinâmico e VALIDA invariantes em tempo de resolução.
46
+ * O Registration Management (RFC 7592) só faz sentido com o registro habilitado
47
+ * (RFC 7591) — `management: true` com `enabled: false` é um erro de configuração.
48
+ */
49
+ export function resolveDynamicRegistration(input) {
50
+ const enabled = input?.enabled ?? false;
51
+ const management = input?.management ?? false;
52
+ if (management && !enabled) {
53
+ throw new Error("authkit: dynamicRegistration.management (RFC 7592) requer " +
54
+ "dynamicRegistration.enabled: true (RFC 7591). Habilite o registro dinâmico " +
55
+ "ou desligue o management.");
56
+ }
57
+ return {
58
+ enabled,
59
+ initialAccessToken: input?.initialAccessToken,
60
+ management,
61
+ };
62
+ }
63
+ export function resolveDeviceFlow(input) {
64
+ return { enabled: input?.enabled ?? false };
65
+ }
66
+ export function resolveUploads(input) {
67
+ return {
68
+ avatars: {
69
+ disk: input?.avatars?.disk,
70
+ directory: input?.avatars?.directory ?? "authkit/avatars",
71
+ maxSizeMb: input?.avatars?.maxSizeMb ?? 5,
72
+ },
73
+ };
74
+ }
75
+ export function resolveDpop(input) {
76
+ return { enabled: input?.enabled ?? false };
77
+ }
78
+ export function resolvePar(input) {
79
+ return {
80
+ enabled: input?.enabled ?? false,
81
+ requirePushedAuthorizationRequests: input?.requirePushedAuthorizationRequests ?? false,
82
+ };
83
+ }
84
+ export function resolveStepUp(input) {
85
+ const mfaAcr = input?.mfaAcr ?? "urn:authkit:mfa";
86
+ // Garante que o mfaAcr esteja sempre na lista anunciada como suportada.
87
+ const acrValues = Array.from(new Set([...(input?.acrValues ?? []), mfaAcr]));
88
+ return { acrValues, mfaAcr };
89
+ }
90
+ export function resolvePasswordless(input) {
91
+ return {
92
+ magicLink: input?.magicLink ?? false,
93
+ passkeyFirst: input?.passkeyFirst ?? false,
94
+ };
95
+ }
96
+ export function resolveLogin(input) {
97
+ return {
98
+ requireVerifiedEmail: input?.requireVerifiedEmail ?? false,
99
+ };
100
+ }
101
+ export function resolveRegistration(input) {
102
+ return {
103
+ enabled: input?.enabled ?? true,
104
+ };
105
+ }
106
+ /**
107
+ * Resolve a config de access tokens. No modo simples (`format: 'jwt'` sem
108
+ * `resources`), o `audience` default vira o próprio issuer e materializamos uma
109
+ * resource implícita com essa URI para que o oidc-provider emita o JWT (um JWT AT
110
+ * SEMPRE exige um resource indicator com `aud`). Cada entrada de `resources`
111
+ * herda o `format` raiz quando não especifica o seu.
112
+ */
113
+ export function resolveAccessTokens(issuer, input) {
114
+ const format = input?.format ?? "opaque";
115
+ const audience = input?.audience ?? issuer;
116
+ const resources = {};
117
+ for (const [indicator, rc] of Object.entries(input?.resources ?? {})) {
118
+ resources[indicator] = {
119
+ audience: rc.audience ?? indicator,
120
+ scopes: rc.scopes,
121
+ format: rc.format ?? format,
122
+ expiresIn: rc.expiresIn,
123
+ };
124
+ }
125
+ const anyResourceJwt = Object.values(resources).some((r) => r.format === "jwt");
126
+ const anyJwt = format === "jwt" || anyResourceJwt;
127
+ return { format, audience, anyJwt, resources };
128
+ }
129
+ export function resolveAdmin(input) {
130
+ return {
131
+ enabled: input?.enabled ?? false,
132
+ roles: input?.roles && input.roles.length > 0 ? input.roles : ["ADMIN"],
133
+ impersonation: false,
134
+ };
135
+ }
136
+ /** Lê API keys de `AUTHKIT_ADMIN_API_KEY` (uma ou várias, separadas por vírgula). */
137
+ function adminApiKeysFromEnv() {
138
+ return (process.env.AUTHKIT_ADMIN_API_KEY ?? "")
139
+ .split(",")
140
+ .map((key) => key.trim())
141
+ .filter(Boolean);
142
+ }
143
+ export function resolveAdminApi(input) {
144
+ const apiKeys = input?.apiKeys === "env" ? adminApiKeysFromEnv() : (input?.apiKeys ?? []);
145
+ return {
146
+ // Default inteligente: liga quando há key resolvida (a menos que enabled:false explícito).
147
+ enabled: input?.enabled ?? apiKeys.length > 0,
148
+ apiKeys,
149
+ };
150
+ }
151
+ export function resolveOrganizations(input) {
152
+ return {
153
+ enabled: input?.enabled,
154
+ roles: ["owner", "admin", "member"],
155
+ allowSelfCreate: false,
156
+ invitationTtlHours: 168,
157
+ claimStrategy: input?.claimStrategy ?? "active",
158
+ };
159
+ }
160
+ /**
161
+ * Resolve os parâmetros do RP de WebAuthn a partir do `issuer` quando omitidos.
162
+ * `rpName` cai no `fallbackName` (branding/mfaIssuer) quando ausente.
163
+ */
164
+ export function resolveWebauthn(issuer, fallbackName, input) {
165
+ let host = "localhost";
166
+ let origin = "http://localhost";
167
+ try {
168
+ const url = new URL(issuer);
169
+ host = url.hostname;
170
+ origin = url.origin;
171
+ }
172
+ catch {
173
+ // issuer inválido → mantém defaults de localhost (dev).
174
+ }
175
+ return {
176
+ rpName: input?.rpName ?? fallbackName,
177
+ rpId: input?.rpId ?? host,
178
+ origin: input?.origin ?? origin,
179
+ };
180
+ }
181
+ const UNITS = { s: 1, m: 60, h: 3600, d: 86400 };
182
+ export function toSeconds(value, fallback) {
183
+ if (value === undefined)
184
+ return fallback;
185
+ if (typeof value === "number")
186
+ return value;
187
+ const m = /^(\d+)\s*([smhd])$/.exec(value.trim());
188
+ if (!m)
189
+ throw new Error(`TTL inválido: ${value}`);
190
+ return Number(m[1]) * UNITS[m[2]];
191
+ }
192
+ /**
193
+ * Default backend-aware de encryption: file/drive/lucid/redis ON; vaults reais OFF.
194
+ * Evita gravar chaves privadas em texto claro em stores que não gerenciam segredos
195
+ * (blobs burros). Vaults reais (aws-secrets-manager, etc.) cuidam da criptografia
196
+ * internamente — encrypt OFF para não duplo-encriptar.
197
+ */
198
+ export function defaultEncryptForStore(store) {
199
+ if (typeof store === "string")
200
+ return true;
201
+ return ["file", "drive", "lucid", "redis"].includes(store.driver);
202
+ }
203
+ /**
204
+ * Mensagem de aviso quando `jwks: 'auto'` cai no fallback de disco (sem
205
+ * AUTHKIT_JWKS): a chave privada será persistida em arquivo. `null` = sem aviso.
206
+ */
207
+ export function jwksAutoFallbackWarning(storePath) {
208
+ if (!storePath)
209
+ return null;
210
+ return (`AuthKit: jwks 'auto' caiu no fallback de disco (${storePath}) — a chave privada de ` +
211
+ `assinatura será persistida em arquivo. Para produção, defina AUTHKIT_JWKS ` +
212
+ `(secret manager) ou configure jwks.store explicitamente.`);
213
+ }
214
+ export function defineConfig(config) {
215
+ return configProvider.create(async (app) => {
216
+ const AdapterClass = await config.adapter.resolver(app);
217
+ // `jwks: 'auto'` → resolve env-aware: AUTHKIT_JWKS inline, senão managed em arquivo.
218
+ const jwksConfig = config.jwks === "auto"
219
+ ? process.env.AUTHKIT_JWKS
220
+ ? {
221
+ source: "jwks",
222
+ keys: JSON.parse(process.env.AUTHKIT_JWKS).keys,
223
+ }
224
+ : {
225
+ source: "managed",
226
+ algorithm: "RS256",
227
+ store: "tmp/authkit_jwks.json",
228
+ }
229
+ : config.jwks;
230
+ if (config.jwks === "auto" && !process.env.AUTHKIT_JWKS) {
231
+ const warning = jwksAutoFallbackWarning(jwksConfig.store ?? null);
232
+ if (warning) {
233
+ await app.container
234
+ .make("logger")
235
+ .then((l) => l?.warn(warning))
236
+ .catch(() => { });
237
+ }
238
+ }
239
+ const storeCfg = jwksConfig.store;
240
+ if (jwksConfig.source === "managed" &&
241
+ storeCfg &&
242
+ typeof storeCfg === "object" &&
243
+ storeCfg.driver === "redis") {
244
+ await app.container
245
+ .make("logger")
246
+ .then((l) => l?.warn('AuthKit: keystore no driver "redis" — garanta PERSISTÊNCIA (RDB/AOF). Num Redis cache-only, um flush apaga o keystore e invalida todos os tokens.'))
247
+ .catch(() => { });
248
+ }
249
+ let jwks;
250
+ if (jwksConfig.source === "managed") {
251
+ const alg = jwksConfig.algorithm ?? "RS256";
252
+ if (jwksConfig.store) {
253
+ const vault = resolveKeystoreVault(jwksConfig.store, {
254
+ makePath: (p) => app.makePath(p),
255
+ container: app.container,
256
+ });
257
+ const encrypt = jwksConfig.encrypt ??
258
+ defaultEncryptForStore(jwksConfig.store);
259
+ const enc = encrypt ? await loadEncryptionService() : undefined;
260
+ const manager = new KeystoreManager(vault, new KeystoreCodec({ encrypt, enc }), alg);
261
+ const store = await manager.ensure();
262
+ // Remove o metadado interno `iat` antes de entregar ao oidc-provider.
263
+ jwks = { keys: store.keys.map(({ iat: _iat, ...jwk }) => jwk) };
264
+ }
265
+ else {
266
+ jwks = await generateJwks(alg);
267
+ }
268
+ }
269
+ else {
270
+ jwks = { keys: jwksConfig.keys ?? [] };
271
+ }
272
+ // #9: mfaIssuer efetivo — top-level do defineConfig vence; senão o do lucidAccountStore; senão default.
273
+ const effectiveMfaIssuer = config.mfaIssuer ??
274
+ config.accountStore?.__mfaIssuer ??
275
+ "AuthKit";
276
+ return {
277
+ issuer: config.issuer,
278
+ AdapterClass,
279
+ clients: config.clients ?? [],
280
+ jwks: jwks,
281
+ jwksConfig,
282
+ ttl: {
283
+ accessToken: toSeconds(config.ttl?.accessToken, 900),
284
+ refreshToken: toSeconds(config.ttl?.refreshToken, 2592000),
285
+ idToken: toSeconds(config.ttl?.idToken, 900),
286
+ session: toSeconds(config.ttl?.session, 604800),
287
+ },
288
+ globalRolesClaim: config.globalRolesClaim ?? "roles",
289
+ cookieKeys: config.cookieKeys ?? [],
290
+ observability: config.observability ?? {},
291
+ findAccount: (sub) => config.accountStore.findById(sub),
292
+ verifyCredentials: async (email, password) => {
293
+ const acc = await config.accountStore.verifyCredentials(email, password);
294
+ return acc ? { id: acc.id } : null;
295
+ },
296
+ accountStore: config.accountStore,
297
+ patStore: config.patStore,
298
+ mountPath: config.mountPath ?? "/oidc",
299
+ render: config.render,
300
+ branding: config.branding,
301
+ social: config.social,
302
+ patIntrospectionSecret: config.patIntrospectionSecret,
303
+ rateLimit: resolveRateLimit(config.rateLimit),
304
+ lockout: resolveLockout(config.lockout),
305
+ notifications: resolveNotifications(),
306
+ mail: config.mail,
307
+ audit: (() => {
308
+ // Sempre compõe o fan-out: além de onEvent/webhook (quando configurados),
309
+ // o sink composto republica TODO evento de auditoria no barramento de
310
+ // diagnostics do Agora (best-effort, zero-config, no-op sem o slot).
311
+ const events = resolveEvents(config.events);
312
+ return composeAuditSink(config.audit, events ?? {});
313
+ })(),
314
+ // #9: reusa mfaIssuer/webauthn declarados no lucidAccountStore quando o
315
+ // top-level não os fornece — consumidor declara UMA vez. Top-level ainda vence.
316
+ mfaIssuer: effectiveMfaIssuer,
317
+ webauthn: resolveWebauthn(config.issuer, effectiveMfaIssuer, config.webauthn ??
318
+ config.accountStore
319
+ ?.__webauthn),
320
+ dynamicRegistration: resolveDynamicRegistration(config.dynamicRegistration),
321
+ deviceFlow: resolveDeviceFlow(config.deviceFlow),
322
+ uploads: resolveUploads(config.uploads),
323
+ dpop: resolveDpop(config.dpop),
324
+ par: resolvePar(config.par),
325
+ stepUp: resolveStepUp(config.stepUp),
326
+ trustedDevices: resolveTrustedDevices(config.trustedDevices),
327
+ botProtection: resolveBotProtection(config.botProtection),
328
+ passwordless: resolvePasswordless(config.passwordless),
329
+ login: resolveLogin(config.login),
330
+ registration: resolveRegistration(config.registration),
331
+ accessTokens: resolveAccessTokens(config.issuer, config.accessTokens),
332
+ admin: resolveAdmin(config.admin),
333
+ adminApi: resolveAdminApi(config.adminApi),
334
+ organizations: resolveOrganizations(config.organizations),
335
+ resolveGeo: config.resolveGeo,
336
+ messages: resolveMessages(config.i18n),
337
+ locale: config.i18n?.locale ?? "pt-BR",
338
+ schema: {
339
+ autoManage: config.schema?.autoManage !== false,
340
+ connection: config.schema?.connection,
341
+ },
342
+ // OPT-IN: default false → caminho síncrono de sempre (byte-idêntico).
343
+ accountLifecycle: {
344
+ durable: config.accountLifecycle?.durable === true,
345
+ },
346
+ // Keys de auth_settings travadas porque foram definidas no defineConfig:
347
+ // config vence e a UI/Admin API não pode alterá-las (ver host/config_locks.ts).
348
+ lockedSettingKeys: deriveLockedSettingKeys(config),
349
+ };
350
+ });
351
+ }
@@ -0,0 +1,197 @@
1
+ /**
2
+ * Funções puras de verificação para `node ace authkit:doctor`. Não dependem do
3
+ * Ace nem do container — recebem objetos simples para serem testáveis em
4
+ * isolamento. O comando `authkit:doctor` só coleta o ambiente e imprime os
5
+ * resultados destas funções.
6
+ */
7
+ export type FindingLevel = 'ok' | 'warn' | 'error';
8
+ export interface Finding {
9
+ level: FindingLevel;
10
+ message: string;
11
+ }
12
+ /** Entrada mínima necessária para rodar os checks (subconjunto da config AuthKit). */
13
+ export interface DoctorInput {
14
+ /** A config `authkit` resolvida pelo container, ou null se não resolver. */
15
+ authkitConfig: Record<string, any> | null;
16
+ /** A config `session` do app (config('session')), ou null se ausente. */
17
+ sessionConfig: Record<string, any> | null;
18
+ /** Resultado de tentar resolver cada peer (true = importável). */
19
+ peers: {
20
+ session: boolean;
21
+ shield: boolean;
22
+ ally: boolean;
23
+ limiter: boolean;
24
+ };
25
+ /**
26
+ * Whether the `auth_settings` table is present (runtime settings capability).
27
+ * Provided by the doctor command; undefined = not checked (doctor runs old version).
28
+ */
29
+ settingsTablePresent?: boolean;
30
+ /**
31
+ * Classes de adapter para detecção de volatilidade (injetadas pelo doctor command
32
+ * em runtime). Quando ausente, o check de volatilidade usa heurística conservadora.
33
+ * Uso interno — não deve ser definido pelo host.
34
+ */
35
+ __adapterClasses?: {
36
+ DatabaseAdapter?: new (...args: any[]) => any;
37
+ };
38
+ }
39
+ /** config('authkit') resolve? */
40
+ export declare function checkConfigResolves(input: DoctorInput): Finding;
41
+ /** issuer é uma URL válida e seu pathname casa com o mountPath. */
42
+ export declare function checkIssuer(input: DoctorInput): Finding[];
43
+ /**
44
+ * Clients: verifica que não há clients estáticos no config (clients são 100%
45
+ * runtime via console admin / Admin API).
46
+ */
47
+ export declare function checkClients(input: DoctorInput): Finding;
48
+ /**
49
+ * Aviso de adapter volátil. Como clients são 100% runtime (sem config estático),
50
+ * um adapter volátil (Redis sem persistência, in-memory) pode perder os clients
51
+ * num restart sem aviso prévio.
52
+ *
53
+ * Detecção de volatilidade: o `AdapterClass` é inspecionado estruturalmente:
54
+ * - `DatabaseAdapter` (ou subclasse) → persistente (sem warn)
55
+ * - qualquer outra classe → pode ser volátil → warn informativo
56
+ */
57
+ export declare function checkAdapterVolatility(input: DoctorInput): Finding | null;
58
+ /** accountStore presente + quais capacidades implementa. */
59
+ export declare function checkAccountStore(input: DoctorInput): Finding[];
60
+ /** session provider configurado + warn se cookie store com tokenSets grandes. */
61
+ export declare function checkSession(input: DoctorInput): Finding[];
62
+ /** Hint de exceções de CSRF do shield para o mountPath. */
63
+ export declare function checkShield(input: DoctorInput): Finding;
64
+ /** ally só é necessário quando social está configurado. */
65
+ export declare function checkAlly(input: DoctorInput): Finding;
66
+ /**
67
+ * OTP lockout: informativa. Avisa quando enabled mas limiter ausente (no-op).
68
+ * Não emite nada quando OTP lockout está desligado por setting (runtime).
69
+ */
70
+ export declare function checkOtpLockout(input: DoctorInput): Finding | null;
71
+ /**
72
+ * Sudo mode: informativa. O sudo mode requer sessões Adonis (sempre disponíveis
73
+ * no console de conta). Apenas informa o estado.
74
+ */
75
+ export declare function checkSudoMode(_input: DoctorInput): Finding | null;
76
+ /** rateLimit ligado mas @adonisjs/limiter ausente → warn. */
77
+ export declare function checkRateLimit(input: DoctorInput): Finding;
78
+ /** admin.enabled mas sem roles → warn. Reporta o modo de UI ativo. */
79
+ export declare function checkAdmin(input: DoctorInput): Finding | null;
80
+ /** requireVerifiedEmail ligado mas o store não sabe checar verificação → warn. */
81
+ export declare function checkRequireVerifiedEmail(input: DoctorInput): Finding | null;
82
+ /**
83
+ * Bot protection (informativo): ativo quando `botProtection.verify` é uma função.
84
+ * Reporta em quais ações está ligado e lembra da semântica fail-safe. Silencioso
85
+ * quando não configurado.
86
+ */
87
+ export declare function checkBotProtection(input: DoctorInput): Finding | null;
88
+ /** webauthn rpId deve casar com o host do issuer. */
89
+ export declare function checkWebauthn(input: DoctorInput): Finding | null;
90
+ /**
91
+ * Política de senha + checagem de vazamento (config do accountStore — opção
92
+ * `password`). Valida o shape da policy e informa quando o HIBP está ligado. A
93
+ * config vive no store (não no nível raiz da config authkit), então lemos de
94
+ * `accountStore` quando o host a expõe via `__passwordConfig` (best-effort) — na
95
+ * ausência, este check é silencioso (não falha).
96
+ */
97
+ export declare function checkPasswordPolicy(input: DoctorInput): Finding | null;
98
+ /** info sobre rotação quando jwks é managed; warn se managed sem store (sem rotação real). */
99
+ export declare function checkJwks(input: DoctorInput): Finding | null;
100
+ /**
101
+ * Formato dos Access Tokens (RFC 9068). Informa o formato configurado e, no modo
102
+ * JWT, lembra que o JWKS precisa ser estável (store persistido) para que os RPs
103
+ * validem os ATs via jwks_uri através de reinícios/rotação.
104
+ */
105
+ export declare function checkAccessTokens(input: DoctorInput): Finding | null;
106
+ /**
107
+ * Organizations (multi-tenancy). Informa se a capacidade está disponível
108
+ * (store expõe createOrg) e avisa se `organizations.enabled: true` no config mas
109
+ * a capacidade não está presente no store (organizationModels não foram passados).
110
+ */
111
+ export declare function checkOrganizations(input: DoctorInput): Finding | null;
112
+ /**
113
+ * Runtime settings: informa se a tabela `auth_settings` está presente.
114
+ * Quando ausente, é silencioso (a feature é opt-in). Quando presente mas
115
+ * `botProtection.verify` NÃO está no config, alerta que a setting em banco
116
+ * é órfã e não tem efeito.
117
+ */
118
+ export declare function checkSettings(input: DoctorInput): Finding | null;
119
+ /**
120
+ * auth_methods setting: verifica se o valor persistido tem forma válida.
121
+ * O input `authMethodsSetting` é injetado pelo doctor command quando a tabela
122
+ * está presente — similar ao padrão do checkSettings mas focado na setting específica.
123
+ *
124
+ * Warns quando:
125
+ * - Todos os métodos estão desligados (fail-safe será acionado em runtime).
126
+ * - A lista `social` referencia um provider não presente em `config.social.providers`.
127
+ */
128
+ export declare function checkAuthMethodsSetting(input: DoctorInput): Finding | null;
129
+ /**
130
+ * Verifica se o fluxo de troca de e-mail verificada está disponível.
131
+ * Reporta se o store suporta a capability de security (requestEmailChange/confirmEmailChange).
132
+ */
133
+ export declare function checkEmailChange(input: DoctorInput): Finding | null;
134
+ /**
135
+ * Verifica a capability de notificações de segurança:
136
+ * - mail configurado (para envio dos alertas)
137
+ * - store com suporte a AccountSecurityCapability
138
+ */
139
+ export declare function checkSecurityNotifications(input: DoctorInput): Finding | null;
140
+ /**
141
+ * Verifica a capability de histórico de senhas.
142
+ * - Informa se a tabela `auth_password_history` está presente.
143
+ * - Avisa quando pepper está configurado como string (não array) — rotation recomendada.
144
+ */
145
+ export declare function checkPasswordPepper(input: DoctorInput): Finding | null;
146
+ /**
147
+ * Verifica a capability de histórico de senhas (disallow_password_reuse).
148
+ * Informa se a tabela `auth_password_history` está presente e a capability está disponível.
149
+ * Avisa quando a setting está ligada mas a capability não está presente.
150
+ */
151
+ export declare function checkPasswordHistory(input: DoctorInput): Finding | null;
152
+ /**
153
+ * Verifica a capability de expiração de senha.
154
+ * Informa se a coluna `password_changed_at` está presente. Avisa quando a setting
155
+ * está ligada mas a coluna não existe.
156
+ */
157
+ export declare function checkPasswordExpiration(input: DoctorInput): Finding | null;
158
+ /**
159
+ * Verifica a setting `session_policy` para valores absurdos ou inconsistentes.
160
+ *
161
+ * Checks:
162
+ * - idleTimeoutMinutes > defaultSessionHours*60: idle timeout nunca irá disparar.
163
+ * - rememberDays > 365: incomumente longo (warn).
164
+ * - idleTimeoutMinutes > 0 mas defaultSessionHours = 0: impossível (error).
165
+ */
166
+ export declare function checkSessionPolicy(input: DoctorInput): Finding | null;
167
+ /**
168
+ * Verifica o catálogo de roles globais (informativo).
169
+ *
170
+ * Checks:
171
+ * - Informa o número de roles no catálogo quando a setting está presente.
172
+ * - Avisa se `cfg.admin.roles` contém role(s) fora do catálogo (o gate do console
173
+ * pode não funcionar como esperado se a role não existir no catálogo).
174
+ */
175
+ export declare function checkRolesCatalog(input: DoctorInput): Finding | null;
176
+ /**
177
+ * Verifica a feature de expiração de conta por inatividade.
178
+ *
179
+ * - Capability-probed: sem audit com `list` → a feature fica indisponível; explica o motivo.
180
+ * - Quando a setting `account_expiration` está presente, valida a coerência dos campos.
181
+ */
182
+ export declare function checkAccountExpiration(input: DoctorInput): Finding | null;
183
+ /**
184
+ * Verifica a disponibilidade do WebAuthn passkey autofill (conditional mediation).
185
+ *
186
+ * Informativo: se webauthn não estiver configurado, o autofill nunca será exibido.
187
+ */
188
+ export declare function checkPasskeyAutofill(input: DoctorInput): Finding | null;
189
+ /**
190
+ * Finding da idade da chave de assinatura managed. `ageDays === null` (sem
191
+ * keystore em arquivo/cofre) → no-op `ok`. Acima de `maxAgeDays` → `warn`.
192
+ */
193
+ export declare function signingKeyAgeFinding(ageDays: number | null, maxAgeDays: number): Finding;
194
+ /** Roda todos os checks e devolve a lista plana de findings. */
195
+ export declare function runAllChecks(input: DoctorInput): Finding[];
196
+ /** Há algum finding de nível 'error'? (define o exit code). */
197
+ export declare function hasErrors(findings: Finding[]): boolean;