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