@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,92 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseCommand, flags } from '@adonisjs/core/ace';
8
+ import { runExpireScan } from '../src/commands/expire_scan_command.js';
9
+ /**
10
+ * Varre contas inativas e reporta expiradas/a expirar.
11
+ *
12
+ * Mecânica:
13
+ * - "Última atividade" = último `login.success` da conta no audit (list capability).
14
+ * - Sem audit queryável → aborta com aviso.
15
+ * - --warn: envia e-mail de aviso às contas a expirar em breve (deduplicado via audit).
16
+ * - --dry-run: reporta sem enviar e-mails nem auditar.
17
+ * - --json: output machine-readable (estrutura ExpireScanResult).
18
+ *
19
+ * Exemplos:
20
+ * node ace authkit:accounts:expire-scan
21
+ * node ace authkit:accounts:expire-scan --dry-run
22
+ * node ace authkit:accounts:expire-scan --warn
23
+ * node ace authkit:accounts:expire-scan --warn --json
24
+ */
25
+ export default class AuthkitExpireScan extends BaseCommand {
26
+ static commandName = 'authkit:accounts:expire-scan';
27
+ static description = 'Varre contas inativas (account_expiration setting) e reporta expiradas/a expirar. Com --warn envia e-mail de aviso. Pensado para cron do host.';
28
+ static help = [
29
+ 'Varre o account store buscando contas inativas (sem login.success no audit há N dias).',
30
+ 'Requer account_expiration.enabled = true na auth_settings E audit sink queryável (list).',
31
+ '',
32
+ 'Exemplos:',
33
+ ' node ace authkit:accounts:expire-scan # lista sem e-mail',
34
+ ' node ace authkit:accounts:expire-scan --dry-run # preview sem auditar',
35
+ ' node ace authkit:accounts:expire-scan --warn # envia e-mails de aviso',
36
+ ' node ace authkit:accounts:expire-scan --warn --json',
37
+ ];
38
+ static options = { startApp: true };
39
+ async run() {
40
+ const result = await runExpireScan(this.app, {
41
+ dryRun: this.dryRun,
42
+ warn: this.warn,
43
+ json: this.json,
44
+ logger: {
45
+ info: (m) => this.logger.info(m),
46
+ warn: (m) => this.logger.warning(m),
47
+ error: (m) => this.logger.error(m),
48
+ },
49
+ });
50
+ if (this.json) {
51
+ this.logger.info(JSON.stringify(result, null, 2));
52
+ return;
53
+ }
54
+ const { summary, expired, warnSoon } = result;
55
+ this.logger.info(`[expire-scan] Scanned: ${summary.scanned} accounts`);
56
+ this.logger.info(`[expire-scan] Expired (blocked at login): ${summary.expired}`);
57
+ this.logger.info(`[expire-scan] Expiring soon (within ${summary.warnDays}d): ${summary.warnSoon}`);
58
+ if (result.warned > 0) {
59
+ this.logger.info(`[expire-scan] Warning emails sent: ${result.warned}`);
60
+ }
61
+ if (result.deduped > 0) {
62
+ this.logger.info(`[expire-scan] Deduped (already warned): ${result.deduped}`);
63
+ }
64
+ if (expired.length > 0) {
65
+ this.logger.warning(`[expire-scan] Expired accounts:`);
66
+ for (const acc of expired) {
67
+ this.logger.warning(` ${acc.email} (${acc.accountId}) — last activity ${acc.lastActivityDaysAgo ?? '?'} days ago`);
68
+ }
69
+ }
70
+ if (warnSoon.length > 0) {
71
+ this.logger.info(`[expire-scan] Expiring soon:`);
72
+ for (const acc of warnSoon) {
73
+ this.logger.info(` ${acc.email} (${acc.accountId}) — expires in ${acc.expiresInDays} days`);
74
+ }
75
+ }
76
+ if (!summary.auditSupported) {
77
+ this.logger.warning(`[expire-scan] Audit sink does not support list(). Feature unavailable.`);
78
+ }
79
+ if (summary.dryRun) {
80
+ this.logger.info(`[expire-scan] DRY RUN — no emails sent, no audit events recorded.`);
81
+ }
82
+ }
83
+ }
84
+ __decorate([
85
+ flags.boolean({ description: 'Reporta sem enviar e-mails nem auditar.' })
86
+ ], AuthkitExpireScan.prototype, "dryRun", void 0);
87
+ __decorate([
88
+ flags.boolean({ description: 'Envia e-mail de aviso às contas a expirar em breve (deduplicado via audit).' })
89
+ ], AuthkitExpireScan.prototype, "warn", void 0);
90
+ __decorate([
91
+ flags.boolean({ description: 'Output em JSON machine-readable (estrutura ExpireScanResult).' })
92
+ ], AuthkitExpireScan.prototype, "json", void 0);
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '@adonisjs/core/ace';
2
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
3
+ /**
4
+ * Importa usuários de outro sistema para o account store do AuthKit. Os hashes
5
+ * de senha entram COMO ESTÃO (sem re-hash) — o lazy rehash no primeiro login
6
+ * migra cada conta para o hasher atual (padrão Auth0/Clerk). Os e-mails
7
+ * duplicados são pulados (idempotente).
8
+ */
9
+ export default class AuthkitImportUsers extends BaseCommand {
10
+ static commandName: string;
11
+ static description: string;
12
+ static help: string[];
13
+ static options: CommandOptions;
14
+ file?: string;
15
+ dryRun?: boolean;
16
+ run(): Promise<void>;
17
+ }
@@ -0,0 +1,80 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { readFile } from 'node:fs/promises';
8
+ import { BaseCommand, flags } from '@adonisjs/core/ace';
9
+ import { parseImportFile, importUsers } from '../src/commands/import_users.js';
10
+ import { resolveAuthkitConfig } from '../src/commands/resolve_config.js';
11
+ /**
12
+ * Importa usuários de outro sistema para o account store do AuthKit. Os hashes
13
+ * de senha entram COMO ESTÃO (sem re-hash) — o lazy rehash no primeiro login
14
+ * migra cada conta para o hasher atual (padrão Auth0/Clerk). Os e-mails
15
+ * duplicados são pulados (idempotente).
16
+ */
17
+ export default class AuthkitImportUsers extends BaseCommand {
18
+ static commandName = 'authkit:users:import';
19
+ static description = 'Importa usuários de um arquivo JSON/NDJSON pelo account store (hashes entram como estão; lazy rehash no login).';
20
+ static help = [
21
+ 'Cada registro aceita: email (obrigatório), password_hash (opcional, qualquer formato),',
22
+ 'name, email_verified, global_roles. Aceita um array JSON ou NDJSON (uma linha por usuário).',
23
+ 'Hashes legados de outros sistemas entram COMO ESTÃO — configure password.legacyVerifier no',
24
+ 'accountStore para que o lazy rehash os migre no primeiro login.',
25
+ '',
26
+ 'Exemplos:',
27
+ ' node ace authkit:users:import --file=users.ndjson',
28
+ ' node ace authkit:users:import --file=users.json --dry-run',
29
+ ];
30
+ static options = { startApp: true };
31
+ async run() {
32
+ if (!this.file) {
33
+ this.logger.logError('❌ --file é obrigatório (caminho do arquivo JSON/NDJSON).');
34
+ this.exitCode = 1;
35
+ return;
36
+ }
37
+ const config = await this.app.container.make('config');
38
+ // Resolve o config provider exportado por defineConfig (provider cru não tem accountStore).
39
+ const authkitConfig = await resolveAuthkitConfig(this.app, config.get('authkit', null));
40
+ const store = authkitConfig?.accountStore;
41
+ if (!store) {
42
+ this.logger.logError("❌ config('authkit').accountStore ausente.");
43
+ this.exitCode = 1;
44
+ return;
45
+ }
46
+ let content;
47
+ try {
48
+ content = await readFile(this.app.makePath(this.file), 'utf-8');
49
+ }
50
+ catch (error) {
51
+ this.logger.logError(`❌ Não foi possível ler o arquivo: ${error.message}`);
52
+ this.exitCode = 1;
53
+ return;
54
+ }
55
+ const { records, parseErrors } = parseImportFile(content);
56
+ const report = await importUsers(store, records, { dryRun: this.dryRun });
57
+ // Erros de parsing entram no relatório agregado.
58
+ report.errors.unshift(...parseErrors);
59
+ if (this.dryRun) {
60
+ this.logger.info('🧪 Dry-run — nenhum dado foi persistido.');
61
+ }
62
+ this.logger.success(`✅ ${report.created} usuário(s) ${this.dryRun ? 'seriam criados' : 'criados'}.`);
63
+ if (report.skippedDuplicate > 0) {
64
+ this.logger.warning(`⚠️ ${report.skippedDuplicate} pulado(s) (e-mail já existente).`);
65
+ }
66
+ if (report.errors.length > 0) {
67
+ this.logger.logError(`❌ ${report.errors.length} erro(s):`);
68
+ for (const e of report.errors) {
69
+ this.logger.logError(` linha ${e.line}: ${e.reason}`);
70
+ }
71
+ this.exitCode = 1;
72
+ }
73
+ }
74
+ }
75
+ __decorate([
76
+ flags.string({ description: 'Caminho do arquivo JSON/NDJSON com os usuários.' })
77
+ ], AuthkitImportUsers.prototype, "file", void 0);
78
+ __decorate([
79
+ flags.boolean({ description: 'Valida e relata SEM persistir nada.' })
80
+ ], AuthkitImportUsers.prototype, "dryRun", void 0);
@@ -0,0 +1,21 @@
1
+ import { BaseCommand } from '@adonisjs/core/ace';
2
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
3
+ /**
4
+ * Rotação de chaves de assinatura JWKS (padrão OIDC). Gera uma chave nova, passa a
5
+ * ASSINAR com ela e mantém as antigas publicadas no JWKS por um período de graça
6
+ * (tokens emitidos antes continuam validando). `--retire` remove TODAS as antigas
7
+ * de imediato; `--dry-run` apenas imprime o plano sem tocar o keystore.
8
+ *
9
+ * Substitui o legado `authkit:rotate-keys` (mantido como alias). Quando a config
10
+ * resolvida traz um `audit` sink, registra o evento `keys.rotated` (best-effort).
11
+ */
12
+ export default class AuthkitKeysRotate extends BaseCommand {
13
+ static commandName: string;
14
+ static description: string;
15
+ static help: string[];
16
+ static options: CommandOptions;
17
+ keep?: number;
18
+ dryRun?: boolean;
19
+ retire?: boolean;
20
+ run(): Promise<void>;
21
+ }
@@ -0,0 +1,126 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseCommand, flags } from '@adonisjs/core/ace';
8
+ import { signingKeyAgeDays } from '../src/keys/keystore.js';
9
+ import { KeystoreManager, resolveKeystoreVault } from '../src/keys/keystore_manager.js';
10
+ import { KeystoreCodec } from '../src/keys/keystore_codec.js';
11
+ import { loadEncryptionService } from '../src/keys/keystore_crypto.js';
12
+ import { defaultEncryptForStore } from '../src/define_config.js';
13
+ import { resolveAuthkitConfig } from '../src/commands/resolve_config.js';
14
+ /**
15
+ * Rotação de chaves de assinatura JWKS (padrão OIDC). Gera uma chave nova, passa a
16
+ * ASSINAR com ela e mantém as antigas publicadas no JWKS por um período de graça
17
+ * (tokens emitidos antes continuam validando). `--retire` remove TODAS as antigas
18
+ * de imediato; `--dry-run` apenas imprime o plano sem tocar o keystore.
19
+ *
20
+ * Substitui o legado `authkit:rotate-keys` (mantido como alias). Quando a config
21
+ * resolvida traz um `audit` sink, registra o evento `keys.rotated` (best-effort).
22
+ */
23
+ export default class AuthkitKeysRotate extends BaseCommand {
24
+ static commandName = 'authkit:keys:rotate';
25
+ static description = 'Rotaciona as chaves de assinatura JWKS managed: gera uma nova chave (novo kid) que passa a assinar e mantém as anteriores no JWKS por um período de graça (--retire remove de imediato; --dry-run só mostra o plano).';
26
+ static help = [
27
+ 'Requer `jwks: { source: "managed", store: "<arquivo>" }` na config authkit.',
28
+ 'A chave nova vira a de assinatura corrente; as `--keep` mais recentes são',
29
+ 'preservadas no JWKS público para que tokens emitidos antes ainda validem.',
30
+ '',
31
+ ' node ace authkit:keys:rotate # rotaciona mantendo 2 chaves',
32
+ ' node ace authkit:keys:rotate --dry-run # só mostra o plano',
33
+ ' node ace authkit:keys:rotate --retire # remove TODAS as chaves antigas',
34
+ ' node ace authkit:keys:rotate --keep=3 # mantém 3 chaves no JWKS',
35
+ ];
36
+ static options = { startApp: true };
37
+ async run() {
38
+ const config = await this.app.container.make('config');
39
+ // Resolve o config provider; no resolvido o `jwks` vira keyset materializado,
40
+ // então o shape de input (source/store) é lido de `jwksConfig`.
41
+ const authkitConfig = await resolveAuthkitConfig(this.app, config.get('authkit', null));
42
+ const jwksInput = (authkitConfig?.jwksConfig ?? authkitConfig?.jwks);
43
+ if (!jwksInput) {
44
+ this.logger.logError("❌ config('authkit').jwks ausente.");
45
+ this.exitCode = 1;
46
+ return;
47
+ }
48
+ const { source, store, algorithm } = jwksInput;
49
+ if (source !== 'managed') {
50
+ this.logger.logError('❌ Rotação só se aplica a jwks.source = "managed".');
51
+ this.exitCode = 1;
52
+ return;
53
+ }
54
+ if (!store) {
55
+ this.logger.logError('❌ jwks.store não configurado. A rotação exige um keystore persistido em arquivo ' +
56
+ '(ex.: jwks: { source: "managed", store: "tmp/authkit_jwks.json" }). ' +
57
+ 'Sem store, o modo managed gera uma chave efêmera por boot e rotacionar não tem efeito.');
58
+ this.exitCode = 1;
59
+ return;
60
+ }
61
+ const alg = algorithm ?? 'RS256';
62
+ const keep = this.keep ?? 2;
63
+ const retire = this.retire ?? false;
64
+ const vault = resolveKeystoreVault(store, { makePath: (p) => this.app.makePath(p), container: this.app.container });
65
+ const encrypt = jwksInput.encrypt ?? defaultEncryptForStore(store);
66
+ const enc = encrypt ? await loadEncryptionService() : undefined;
67
+ const manager = new KeystoreManager(vault, new KeystoreCodec({ encrypt, enc }), alg);
68
+ const current = await manager.read();
69
+ const ageDays = signingKeyAgeDays(current);
70
+ if (ageDays !== null) {
71
+ this.logger.info(`Chave de assinatura corrente tem ~${ageDays} dia(s) de idade.`);
72
+ }
73
+ // --dry-run: imprime o plano (puro, sem gerar chave nem tocar disco) e sai.
74
+ if (this.dryRun) {
75
+ const plan = await manager.plan(keep, retire);
76
+ this.logger.info('Plano de rotação (dry-run — nada foi alterado):');
77
+ this.logger.info(` • chave corrente: ${plan.currentKid ?? '(nenhuma — keystore vazio)'}`);
78
+ this.logger.info(` • após rotação o JWKS manteria ${plan.keep} chave(s)`);
79
+ this.logger.info(` • mantidas: ${plan.keptKids.join(', ')}`);
80
+ if (plan.retiredKids.length) {
81
+ this.logger.warning(` • aposentadas: ${plan.retiredKids.join(', ')}`);
82
+ }
83
+ else {
84
+ this.logger.info(' • aposentadas: nenhuma');
85
+ }
86
+ return;
87
+ }
88
+ const { newKid, retiredKids, store: result } = await manager.rotate(keep, retire);
89
+ this.logger.success(`✅ Nova chave de assinatura gerada: kid=${newKid} (alg=${alg}).`);
90
+ this.logger.info(`JWKS agora serve ${result.keys.length} chave(s) (kids: ${result.keys.map((k) => k.kid).join(', ')}).`);
91
+ if (retiredKids.length) {
92
+ this.logger.warning(`⚠️ Chaves aposentadas (tokens assinados por elas deixarão de validar): ${retiredKids.join(', ')}`);
93
+ }
94
+ this.logger.info('Reinicie o processo (ou recarregue a config) para passar a assinar com a nova chave.');
95
+ // Audit event best-effort: a config resolvida expõe o sink em `audit`.
96
+ const sink = authkitConfig?.audit;
97
+ if (sink && typeof sink.record === 'function') {
98
+ try {
99
+ await sink.record({
100
+ type: 'keys.rotated',
101
+ metadata: {
102
+ newKid,
103
+ retiredKids,
104
+ keptKids: result.keys.map((k) => k.kid),
105
+ retire,
106
+ alg,
107
+ },
108
+ });
109
+ }
110
+ catch {
111
+ // best-effort: nunca falha a rotação por causa do log de auditoria.
112
+ }
113
+ }
114
+ }
115
+ }
116
+ __decorate([
117
+ flags.number({ description: 'Quantas chaves manter no JWKS (default 2).' })
118
+ ], AuthkitKeysRotate.prototype, "keep", void 0);
119
+ __decorate([
120
+ flags.boolean({ description: 'Apenas mostra o plano da rotação; NÃO altera o keystore.' })
121
+ ], AuthkitKeysRotate.prototype, "dryRun", void 0);
122
+ __decorate([
123
+ flags.boolean({
124
+ description: 'Remove TODAS as chaves antigas de imediato (sem período de graça).',
125
+ })
126
+ ], AuthkitKeysRotate.prototype, "retire", void 0);
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Lê os metadados dos commands a partir do arquivo commands.json.
3
+ * O Ace usa esta função para listar os comandos disponíveis do pacote.
4
+ */
5
+ export declare function getMetaData(): Promise<any[] | undefined>;
6
+ /**
7
+ * Importa a classe do comando pelo `commandName`.
8
+ * O Ace chama esta função quando precisa executar um comando do pacote.
9
+ */
10
+ export declare function getCommand(metaData: {
11
+ commandName: string;
12
+ }): Promise<any>;
@@ -0,0 +1,38 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import { readFile } from 'node:fs/promises';
10
+ /**
11
+ * Cache in-memory após primeira leitura
12
+ */
13
+ let commandsMetaData;
14
+ /**
15
+ * Lê os metadados dos commands a partir do arquivo commands.json.
16
+ * O Ace usa esta função para listar os comandos disponíveis do pacote.
17
+ */
18
+ export async function getMetaData() {
19
+ if (commandsMetaData) {
20
+ return commandsMetaData;
21
+ }
22
+ const commandsIndex = await readFile(new URL('./commands.json', import.meta.url), 'utf-8');
23
+ commandsMetaData = JSON.parse(commandsIndex).commands;
24
+ return commandsMetaData;
25
+ }
26
+ /**
27
+ * Importa a classe do comando pelo `commandName`.
28
+ * O Ace chama esta função quando precisa executar um comando do pacote.
29
+ */
30
+ export async function getCommand(metaData) {
31
+ const commands = await getMetaData();
32
+ const command = commands.find(({ commandName }) => metaData.commandName === commandName);
33
+ if (!command) {
34
+ return null;
35
+ }
36
+ const { default: commandConstructor } = await import(__rewriteRelativeImportExtension(new URL(command.filePath, import.meta.url).href));
37
+ return commandConstructor;
38
+ }
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '@adonisjs/core/ace';
2
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
3
+ /**
4
+ * Obtém uma runtime setting por key.
5
+ *
6
+ * Exemplo:
7
+ * node ace authkit:settings:get lockout
8
+ * node ace authkit:settings:get lockout --json
9
+ */
10
+ export default class AuthkitSettingsGet extends BaseCommand {
11
+ static commandName: string;
12
+ static description: string;
13
+ static help: string[];
14
+ static options: CommandOptions;
15
+ key: string;
16
+ json?: boolean;
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,43 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseCommand, args, flags } from '@adonisjs/core/ace';
8
+ import { settingsGet } from '../src/commands/settings_commands.js';
9
+ /**
10
+ * Obtém uma runtime setting por key.
11
+ *
12
+ * Exemplo:
13
+ * node ace authkit:settings:get lockout
14
+ * node ace authkit:settings:get lockout --json
15
+ */
16
+ export default class AuthkitSettingsGet extends BaseCommand {
17
+ static commandName = 'authkit:settings:get';
18
+ static description = 'Obtém uma runtime setting por key de `auth_settings`.';
19
+ static help = [
20
+ 'Obtém o valor atual de uma setting pelo nome da key.',
21
+ 'Retorna aviso quando a setting não está definida (config/default aplica).',
22
+ '',
23
+ 'Exemplos:',
24
+ ' node ace authkit:settings:get lockout',
25
+ ' node ace authkit:settings:get session_policy --json',
26
+ ];
27
+ static options = { startApp: true };
28
+ async run() {
29
+ await settingsGet(this.app, this.key, {
30
+ json: this.json,
31
+ logger: {
32
+ info: (m) => this.logger.info(m),
33
+ warn: (m) => this.logger.warning(m),
34
+ },
35
+ });
36
+ }
37
+ }
38
+ __decorate([
39
+ args.string({ description: 'Nome da setting (ex.: lockout, session_policy).' })
40
+ ], AuthkitSettingsGet.prototype, "key", void 0);
41
+ __decorate([
42
+ flags.boolean({ description: 'Output em JSON machine-readable.' })
43
+ ], AuthkitSettingsGet.prototype, "json", void 0);
@@ -0,0 +1,17 @@
1
+ import { BaseCommand } from '@adonisjs/core/ace';
2
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
3
+ /**
4
+ * Lista todas as runtime settings presentes em `auth_settings`.
5
+ *
6
+ * Exemplo:
7
+ * node ace authkit:settings:list
8
+ * node ace authkit:settings:list --json
9
+ */
10
+ export default class AuthkitSettingsList extends BaseCommand {
11
+ static commandName: string;
12
+ static description: string;
13
+ static help: string[];
14
+ static options: CommandOptions;
15
+ json?: boolean;
16
+ run(): Promise<void>;
17
+ }
@@ -0,0 +1,39 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseCommand, flags } from '@adonisjs/core/ace';
8
+ import { settingsList } from '../src/commands/settings_commands.js';
9
+ /**
10
+ * Lista todas as runtime settings presentes em `auth_settings`.
11
+ *
12
+ * Exemplo:
13
+ * node ace authkit:settings:list
14
+ * node ace authkit:settings:list --json
15
+ */
16
+ export default class AuthkitSettingsList extends BaseCommand {
17
+ static commandName = 'authkit:settings:list';
18
+ static description = 'Lista todas as runtime settings presentes em `auth_settings`.';
19
+ static help = [
20
+ 'Lista todas as settings salvas na tabela `auth_settings`, com key, valor e metadados.',
21
+ '',
22
+ 'Exemplos:',
23
+ ' node ace authkit:settings:list',
24
+ ' node ace authkit:settings:list --json',
25
+ ];
26
+ static options = { startApp: true };
27
+ async run() {
28
+ await settingsList(this.app, {
29
+ json: this.json,
30
+ logger: {
31
+ info: (m) => this.logger.info(m),
32
+ warn: (m) => this.logger.warning(m),
33
+ },
34
+ });
35
+ }
36
+ }
37
+ __decorate([
38
+ flags.boolean({ description: 'Output em JSON machine-readable.' })
39
+ ], AuthkitSettingsList.prototype, "json", void 0);
@@ -0,0 +1,20 @@
1
+ import { BaseCommand } from '@adonisjs/core/ace';
2
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
3
+ /**
4
+ * Grava (upsert) uma runtime setting em `auth_settings`.
5
+ *
6
+ * Exemplo:
7
+ * node ace authkit:settings:set lockout '{"enabled":true,"maxAttempts":3}'
8
+ * node ace authkit:settings:set lockout '{"enabled":false}' --json
9
+ * node ace authkit:settings:set my_custom_key '{"foo":"bar"}'
10
+ */
11
+ export default class AuthkitSettingsSet extends BaseCommand {
12
+ static commandName: string;
13
+ static description: string;
14
+ static help: string[];
15
+ static options: CommandOptions;
16
+ key: string;
17
+ value: string;
18
+ json?: boolean;
19
+ run(): Promise<void>;
20
+ }
@@ -0,0 +1,55 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseCommand, args, flags } from '@adonisjs/core/ace';
8
+ import { settingsSet } from '../src/commands/settings_commands.js';
9
+ /**
10
+ * Grava (upsert) uma runtime setting em `auth_settings`.
11
+ *
12
+ * Exemplo:
13
+ * node ace authkit:settings:set lockout '{"enabled":true,"maxAttempts":3}'
14
+ * node ace authkit:settings:set lockout '{"enabled":false}' --json
15
+ * node ace authkit:settings:set my_custom_key '{"foo":"bar"}'
16
+ */
17
+ export default class AuthkitSettingsSet extends BaseCommand {
18
+ static commandName = 'authkit:settings:set';
19
+ static description = 'Grava (upsert) uma runtime setting em `auth_settings`. Valida shape para keys conhecidas.';
20
+ static help = [
21
+ 'Grava ou atualiza uma setting pelo nome da key com o valor JSON fornecido.',
22
+ 'Para keys conhecidas do catálogo AuthKit, valida o shape antes de persistir.',
23
+ 'Keys desconhecidas são aceitas com aviso (stored as-is).',
24
+ 'Audita settings.updated com actor "cli".',
25
+ '',
26
+ 'Exemplos:',
27
+ ' node ace authkit:settings:set lockout \'{"enabled":true,"maxAttempts":3,"windowSec":900}\'',
28
+ ' node ace authkit:settings:set session_policy \'{"rememberEnabled":true,"rememberDays":14}\'',
29
+ ' node ace authkit:settings:set token_ttl \'{"accessTokenSec":1800}\'',
30
+ ' node ace authkit:settings:set my_flag \'{"enabled":true}\'',
31
+ ' node ace authkit:settings:set lockout \'{"enabled":false}\' --json',
32
+ ];
33
+ static options = { startApp: true };
34
+ async run() {
35
+ const ok = await settingsSet(this.app, this.key, this.value, {
36
+ json: this.json,
37
+ logger: {
38
+ info: (m) => this.logger.info(m),
39
+ warn: (m) => this.logger.warning(m),
40
+ error: (m) => this.logger.logError(m),
41
+ },
42
+ });
43
+ if (!ok)
44
+ this.exitCode = 1;
45
+ }
46
+ }
47
+ __decorate([
48
+ args.string({ description: 'Nome da setting (ex.: lockout, session_policy, token_ttl).' })
49
+ ], AuthkitSettingsSet.prototype, "key", void 0);
50
+ __decorate([
51
+ args.string({ description: 'Valor JSON da setting (deve ser um objeto JSON válido).' })
52
+ ], AuthkitSettingsSet.prototype, "value", void 0);
53
+ __decorate([
54
+ flags.boolean({ description: 'Output em JSON machine-readable.' })
55
+ ], AuthkitSettingsSet.prototype, "json", void 0);
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from '@adonisjs/core/ace';
2
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
3
+ /**
4
+ * Remove uma runtime setting de `auth_settings` (reset to config/default).
5
+ *
6
+ * Exemplo:
7
+ * node ace authkit:settings:unset lockout
8
+ * node ace authkit:settings:unset lockout --json
9
+ */
10
+ export default class AuthkitSettingsUnset extends BaseCommand {
11
+ static commandName: string;
12
+ static description: string;
13
+ static help: string[];
14
+ static options: CommandOptions;
15
+ key: string;
16
+ json?: boolean;
17
+ run(): Promise<void>;
18
+ }
@@ -0,0 +1,46 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BaseCommand, args, flags } from '@adonisjs/core/ace';
8
+ import { settingsUnset } from '../src/commands/settings_commands.js';
9
+ /**
10
+ * Remove uma runtime setting de `auth_settings` (reset to config/default).
11
+ *
12
+ * Exemplo:
13
+ * node ace authkit:settings:unset lockout
14
+ * node ace authkit:settings:unset lockout --json
15
+ */
16
+ export default class AuthkitSettingsUnset extends BaseCommand {
17
+ static commandName = 'authkit:settings:unset';
18
+ static description = 'Remove uma runtime setting de `auth_settings` (reset ao config/default).';
19
+ static help = [
20
+ 'Remove a setting pelo nome da key. Após a remoção, o config estático ou o default',
21
+ 'da lib passa a ser a fonte de verdade para aquela setting.',
22
+ 'Avisa quando a key não estava definida (nada é apagado).',
23
+ 'Audita settings.updated (action: deleted) com actor "cli".',
24
+ '',
25
+ 'Exemplos:',
26
+ ' node ace authkit:settings:unset lockout',
27
+ ' node ace authkit:settings:unset session_policy --json',
28
+ ];
29
+ static options = { startApp: true };
30
+ async run() {
31
+ await settingsUnset(this.app, this.key, {
32
+ json: this.json,
33
+ logger: {
34
+ info: (m) => this.logger.info(m),
35
+ warn: (m) => this.logger.warning(m),
36
+ error: (m) => this.logger.logError(m),
37
+ },
38
+ });
39
+ }
40
+ }
41
+ __decorate([
42
+ args.string({ description: 'Nome da setting a remover (ex.: lockout, session_policy).' })
43
+ ], AuthkitSettingsUnset.prototype, "key", void 0);
44
+ __decorate([
45
+ flags.boolean({ description: 'Output em JSON machine-readable.' })
46
+ ], AuthkitSettingsUnset.prototype, "json", void 0);