@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,45 @@
1
+ import type { AuditEvent, AuditSink } from "../audit/audit_sink.js";
2
+ /**
3
+ * Configuração de eventos/webhooks para o host observar tudo que o IdP audita.
4
+ *
5
+ * - `onEvent`: callback in-process disparado para CADA evento de auditoria
6
+ * (best-effort, fire-and-forget). Útil para encaminhar a um bus interno.
7
+ * - `webhook`: POST JSON do evento para uma URL externa. Quando `secret` é dado,
8
+ * assina o corpo com HMAC-SHA256 no header `x-authkit-signature`.
9
+ *
10
+ * Nada aqui pode lançar para dentro do caminho da request: todo erro é engolido.
11
+ */
12
+ export interface EventsConfigInput {
13
+ /** Callback in-process para cada evento auditado (best-effort). */
14
+ onEvent?: (event: AuditEvent) => void | Promise<void>;
15
+ /** Webhook HTTP: POST do evento em JSON. */
16
+ webhook?: {
17
+ /** URL de destino do POST. */
18
+ url: string;
19
+ /** Segredo opcional para assinar o corpo (HMAC-SHA256). */
20
+ secret?: string;
21
+ };
22
+ }
23
+ export interface ResolvedEventsConfig {
24
+ onEvent?: (event: AuditEvent) => void | Promise<void>;
25
+ webhook?: {
26
+ url: string;
27
+ secret?: string;
28
+ };
29
+ }
30
+ export declare function resolveEvents(input?: EventsConfigInput): ResolvedEventsConfig | undefined;
31
+ /**
32
+ * Constrói o corpo JSON canônico do webhook a partir de um evento de auditoria.
33
+ * O `ts` é o instante do dispatch (ISO 8601).
34
+ */
35
+ export declare function buildWebhookBody(event: AuditEvent): string;
36
+ /** Calcula o header de assinatura `sha256=<hmac>` para um corpo + segredo. */
37
+ export declare function signWebhookBody(body: string, secret: string): string;
38
+ /**
39
+ * Decora um AuditSink (ou cria um do zero) num sink fan-out: cada `record`
40
+ * persiste no sink original (se houver) E dispara onEvent + webhook. Falhas em
41
+ * qualquer ramo são isoladas — uma não impede as outras nem a request.
42
+ *
43
+ * `list` é delegado ao sink original quando existir (preserva a consulta admin).
44
+ */
45
+ export declare function composeAuditSink(original: AuditSink | undefined, events?: ResolvedEventsConfig): AuditSink;
@@ -0,0 +1,117 @@
1
+ import { createHmac } from "node:crypto";
2
+ import { emitDiagnostic } from "../observability/diagnostics_bridge.js";
3
+ export function resolveEvents(input) {
4
+ if (!input || (!input.onEvent && !input.webhook))
5
+ return undefined;
6
+ return {
7
+ onEvent: input.onEvent,
8
+ webhook: input.webhook,
9
+ };
10
+ }
11
+ /** Timeout (ms) do POST do webhook antes de abortar. */
12
+ const WEBHOOK_TIMEOUT_MS = 5000;
13
+ /**
14
+ * Constrói o corpo JSON canônico do webhook a partir de um evento de auditoria.
15
+ * O `ts` é o instante do dispatch (ISO 8601).
16
+ */
17
+ export function buildWebhookBody(event) {
18
+ return JSON.stringify({
19
+ type: event.type,
20
+ accountId: event.accountId ?? null,
21
+ email: event.email ?? null,
22
+ clientId: event.clientId ?? null,
23
+ ip: event.ip ?? null,
24
+ metadata: event.metadata ?? {},
25
+ ts: new Date().toISOString(),
26
+ });
27
+ }
28
+ /** Calcula o header de assinatura `sha256=<hmac>` para um corpo + segredo. */
29
+ export function signWebhookBody(body, secret) {
30
+ return "sha256=" + createHmac("sha256", secret).update(body).digest("hex");
31
+ }
32
+ /**
33
+ * Dispara o webhook de forma fire-and-forget: timeout de 5s via AbortSignal,
34
+ * captura QUALQUER erro (rede, abort, HMAC) sem propagar. Nunca lança.
35
+ */
36
+ async function dispatchWebhook(webhook, event) {
37
+ try {
38
+ const body = buildWebhookBody(event);
39
+ const headers = {
40
+ "content-type": "application/json",
41
+ };
42
+ if (webhook.secret) {
43
+ headers["x-authkit-signature"] = signWebhookBody(body, webhook.secret);
44
+ }
45
+ await fetch(webhook.url, {
46
+ method: "POST",
47
+ headers,
48
+ body,
49
+ signal: AbortSignal.timeout(WEBHOOK_TIMEOUT_MS),
50
+ });
51
+ }
52
+ catch {
53
+ // best-effort: erro de webhook nunca quebra o caminho da request.
54
+ }
55
+ }
56
+ /**
57
+ * Decora um AuditSink (ou cria um do zero) num sink fan-out: cada `record`
58
+ * persiste no sink original (se houver) E dispara onEvent + webhook. Falhas em
59
+ * qualquer ramo são isoladas — uma não impede as outras nem a request.
60
+ *
61
+ * `list` é delegado ao sink original quando existir (preserva a consulta admin).
62
+ */
63
+ export function composeAuditSink(original, events = {}) {
64
+ const composed = {
65
+ async record(event) {
66
+ // Persistência original (best-effort, isolada).
67
+ if (original) {
68
+ try {
69
+ await original.record(event);
70
+ }
71
+ catch {
72
+ // sink original com defeito não impede os demais ramos.
73
+ }
74
+ }
75
+ // Callback in-process (best-effort, isolado).
76
+ if (events.onEvent) {
77
+ try {
78
+ await events.onEvent(event);
79
+ }
80
+ catch {
81
+ // onEvent com defeito não quebra a request.
82
+ }
83
+ }
84
+ // Webhook fire-and-forget (não aguardamos a entrega).
85
+ if (events.webhook) {
86
+ void dispatchWebhook(events.webhook, event);
87
+ }
88
+ // Diagnostics Agora (best-effort, sempre ligado, no-op sem o slot).
89
+ // Canal: `agora:authkit:<AuditEventType>` (o `type` É o sufixo).
90
+ emitDiagnostic(event.type, event);
91
+ },
92
+ };
93
+ // Preserva a capacidade de consulta do sink original (console admin).
94
+ if (original && typeof original.list === "function") {
95
+ composed.list = original.list.bind(original);
96
+ }
97
+ // Preserva a anonimização (LGPD) do sink original (deleção de conta).
98
+ if (original && typeof original.anonymizeAccount === "function") {
99
+ composed.anonymizeAccount = original.anonymizeAccount.bind(original);
100
+ }
101
+ // Preserva quaisquer propriedades extras do sink original (ex.: campos de
102
+ // introspecção/diagnóstico que sinks customizados expõem) — o fan-out é um
103
+ // decorador transparente sobre a superfície do sink original. Funções são
104
+ // re-ligadas ao original para manter o `this`; métodos já tratados acima e o
105
+ // `record` (sobrescrito) não são copiados.
106
+ if (original) {
107
+ const src = original;
108
+ const dst = composed;
109
+ for (const key of Object.keys(src)) {
110
+ if (key === "record" || key === "list" || key === "anonymizeAccount")
111
+ continue;
112
+ const value = src[key];
113
+ dst[key] = typeof value === "function" ? value.bind(original) : value;
114
+ }
115
+ }
116
+ return composed;
117
+ }
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Account Self-Service JSON API
3
+ *
4
+ * Endpoints JSON sob `/account/api/*` (session-authed via accountGuard, mutating
5
+ * com CSRF). Reusa a lógica dos controllers de conta existentes sem duplicar regras.
6
+ *
7
+ * Mapa de rotas:
8
+ * GET /account/api/me → perfil + flags
9
+ * GET /account/api/security → overview de segurança (sessões, MFA, etc.)
10
+ * PATCH /account/api/profile → atualizar nome/avatar
11
+ * POST /account/api/password → trocar senha (sudo + senha atual)
12
+ * POST /account/api/email-change → solicitar troca de e-mail (sudo)
13
+ * POST /account/api/email-change/cancel → cancelar troca pendente
14
+ * GET /account/api/sessions → sessões ativas
15
+ * DELETE /account/api/sessions/:id → revogar uma sessão
16
+ * POST /account/api/sessions/revoke-others → revogar todas exceto a atual
17
+ * POST /account/api/sessions/revoke-all → revogar TODAS + logout global (signedOut: true)
18
+ * GET /account/api/apps → grants (apps autorizados)
19
+ * DELETE /account/api/apps/:clientId → revogar consentimento de um app
20
+ * GET /account/api/mfa → status MFA (totp + passkeys + recovery)
21
+ * GET /account/api/passkeys → lista passkeys
22
+ * DELETE /account/api/passkeys/:id → remover passkey
23
+ * GET /account/api/tokens → lista PATs
24
+ * POST /account/api/tokens → criar PAT (sudo)
25
+ * DELETE /account/api/tokens/:id → revogar PAT (sudo)
26
+ * GET /account/api/orgs → lista orgs do usuário
27
+ * GET /account/api/orgs/:id → detalhe de org (requer membership)
28
+ * GET /account/api/orgs/invitations → convites pendentes
29
+ */
30
+ import '../augmentations.js';
31
+ import type { HttpContext } from '@adonisjs/core/http';
32
+ export default class AccountApiController {
33
+ /** Perfil + flags do usuário logado. */
34
+ me(ctx: HttpContext): Promise<void | {
35
+ id: any;
36
+ email: any;
37
+ emailVerified: any;
38
+ name: any;
39
+ avatarUrl: any;
40
+ globalRoles: any;
41
+ hasPassword: boolean;
42
+ mfaEnabled: boolean;
43
+ passkeyCount: number;
44
+ sudoActive: boolean;
45
+ capabilities: {
46
+ securitySupported: boolean;
47
+ profileSupported: boolean;
48
+ passkeysSupported: boolean;
49
+ orgsSupported: boolean;
50
+ tokensSupported: boolean;
51
+ avatarUploadSupported: boolean;
52
+ sessionsSupported: boolean;
53
+ };
54
+ }>;
55
+ /** Overview de segurança: sessões ativas, status MFA, passkeys, last pw change. */
56
+ securityOverview(ctx: HttpContext): Promise<void | {
57
+ email: any;
58
+ pendingEmail: any;
59
+ securitySupported: boolean;
60
+ profileSupported: boolean;
61
+ sessionsSupported: boolean;
62
+ activeSessions: {
63
+ id: string;
64
+ loginTs: string | null;
65
+ browser: string | null;
66
+ os: string | null;
67
+ ip: string | null;
68
+ location: string | null;
69
+ amr: string[];
70
+ }[];
71
+ mfa: {
72
+ enabled: boolean;
73
+ totpEnrolled: boolean;
74
+ passkeyCount: number;
75
+ passkeysSupported: boolean;
76
+ };
77
+ }>;
78
+ /** Atualizar nome + avatar do perfil. */
79
+ updateProfile(ctx: HttpContext): Promise<void | {
80
+ id: string;
81
+ name: string | null;
82
+ avatarUrl: string | null;
83
+ }>;
84
+ /** Trocar senha. Exige sudo + senha atual (mesmo comportamento da tela). */
85
+ changePassword(ctx: HttpContext): Promise<void | {
86
+ ok: boolean;
87
+ }>;
88
+ /** Solicitar troca de e-mail. Exige sudo. */
89
+ requestEmailChange(ctx: HttpContext): Promise<void | {
90
+ ok: boolean;
91
+ email: string;
92
+ }>;
93
+ /** Cancelar troca de e-mail pendente. */
94
+ cancelEmailChange(ctx: HttpContext): Promise<void | {
95
+ ok: boolean;
96
+ }>;
97
+ /** Sessões ativas do usuário logado. */
98
+ listSessions(ctx: HttpContext): Promise<{
99
+ supported: boolean;
100
+ sessions: {
101
+ id: string;
102
+ loginTs: string | null;
103
+ browser: string | null;
104
+ os: string | null;
105
+ ip: string | null;
106
+ location: string | null;
107
+ amr: string[];
108
+ }[];
109
+ }>;
110
+ /** Revogar uma sessão específica (verifica que pertence ao usuário logado). */
111
+ revokeSession(ctx: HttpContext): Promise<void | {
112
+ ok: boolean;
113
+ revoked: string;
114
+ }>;
115
+ /** Revogar todas as sessões exceto a atual (identificada pelo cookie de sessão). */
116
+ revokeOtherSessions(ctx: HttpContext): Promise<void | {
117
+ sessions: number;
118
+ grants: number;
119
+ accessTokens: number;
120
+ refreshTokens: number;
121
+ ok: boolean;
122
+ }>;
123
+ /**
124
+ * Revogar TODAS as sessões OIDC + grants/tokens da conta e encerrar a sessão
125
+ * Adonis do console (logout global). Retorna `{ ok, signedOut: true }` para que
126
+ * a UI redirecione para o login.
127
+ *
128
+ * i18n keys: account.sessions.revoke_all_success (unused server-side — JSON API)
129
+ */
130
+ revokeAllSessions(ctx: HttpContext): Promise<void | {
131
+ sessions: number;
132
+ grants: number;
133
+ accessTokens: number;
134
+ refreshTokens: number;
135
+ ok: boolean;
136
+ signedOut: boolean;
137
+ }>;
138
+ /** Apps com acesso (grants) do usuário logado. */
139
+ listApps(ctx: HttpContext): Promise<{
140
+ supported: boolean;
141
+ apps: {
142
+ clientId: string;
143
+ accessTokens: number;
144
+ refreshTokens: number;
145
+ }[];
146
+ }>;
147
+ /** Revogar consentimento de um app (clientId). */
148
+ revokeApp(ctx: HttpContext): Promise<void | {
149
+ sessions: number;
150
+ grants: number;
151
+ accessTokens: number;
152
+ refreshTokens: number;
153
+ ok: boolean;
154
+ }>;
155
+ /** Status completo do MFA: TOTP + passkeys + recovery. */
156
+ mfaStatus(ctx: HttpContext): Promise<{
157
+ enabled: any;
158
+ totp: {
159
+ enrolled: any;
160
+ };
161
+ passkeys: {
162
+ supported: boolean;
163
+ count: number;
164
+ items: {
165
+ id: string;
166
+ label: string | null;
167
+ createdAt: string;
168
+ }[];
169
+ };
170
+ recovery: {
171
+ available: any;
172
+ };
173
+ }>;
174
+ /** Lista passkeys do usuário logado. */
175
+ listPasskeys(ctx: HttpContext): Promise<{
176
+ supported: boolean;
177
+ passkeys: any;
178
+ }>;
179
+ /** Remover uma passkey. Exige sudo. */
180
+ removePasskey(ctx: HttpContext): Promise<void | {
181
+ ok: boolean;
182
+ removed: string;
183
+ }>;
184
+ /** Lista PATs (Personal Access Tokens) do usuário logado. */
185
+ listTokens(ctx: HttpContext): Promise<{
186
+ supported: boolean;
187
+ tokens: any;
188
+ }>;
189
+ /** Criar um PAT. Exige sudo. O secret é retornado UMA vez. */
190
+ createToken(ctx: HttpContext): Promise<void | {
191
+ id: any;
192
+ name: any;
193
+ scopes: any;
194
+ audience: any;
195
+ createdAt: any;
196
+ secret: any;
197
+ }>;
198
+ /** Revogar um PAT. Exige sudo. */
199
+ revokeToken(ctx: HttpContext): Promise<void | {
200
+ ok: boolean;
201
+ revoked: string;
202
+ }>;
203
+ /** Lista orgs do usuário logado. Alias consolidado dos /account/orgs/json existentes. */
204
+ listOrgs(ctx: HttpContext): Promise<{
205
+ supported: boolean;
206
+ activeOrgId: any;
207
+ orgs: {
208
+ id: string;
209
+ name: string;
210
+ slug: string;
211
+ logoUrl: string | null;
212
+ role: string;
213
+ isActive: boolean;
214
+ }[];
215
+ }>;
216
+ /** Detalhe de uma org (requer membership). */
217
+ showOrg(ctx: HttpContext): Promise<void | {
218
+ id: string;
219
+ name: string;
220
+ slug: string;
221
+ logoUrl: string | null;
222
+ role: string;
223
+ canManage: boolean;
224
+ members: {
225
+ accountId: string;
226
+ email: string | null;
227
+ role: string;
228
+ joinedAt: string;
229
+ }[];
230
+ }>;
231
+ /** Convites pendentes para o e-mail do usuário logado. */
232
+ listOrgInvitations(ctx: HttpContext): Promise<void | {
233
+ supported: boolean;
234
+ invitations: {
235
+ id: string;
236
+ organizationId: string;
237
+ orgName: string;
238
+ orgSlug: string;
239
+ email: string;
240
+ role: string;
241
+ expiresAt: string;
242
+ createdAt: string;
243
+ }[];
244
+ }>;
245
+ }