@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,107 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="pt-br"><head><meta charset="utf-8"><title>{{ t('mfa_challenge.page_title') }} — {{ brand && brand.appName ? brand.appName : t('common.app_fallback') }}</title>
|
|
3
|
+
@include('authkit::partials/styles')
|
|
4
|
+
</head>
|
|
5
|
+
<body class="min-h-screen flex items-center justify-center bg-gray-50">
|
|
6
|
+
<div class="w-full max-w-sm bg-white p-8 rounded-2xl shadow-xl ring-1 ring-black/5">
|
|
7
|
+
<form method="POST" action="/auth/interaction/{{ uid }}/mfa">
|
|
8
|
+
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
9
|
+
<h1 class="text-xl font-semibold text-gray-900">{{ t('mfa_challenge.title') }}</h1>
|
|
10
|
+
<p class="mt-1 text-sm text-gray-500">
|
|
11
|
+
{{ t('mfa_challenge.intro') }}
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
@if(error)
|
|
15
|
+
<p class="mt-4 text-sm text-red-600">{{ error }}</p>
|
|
16
|
+
@end
|
|
17
|
+
|
|
18
|
+
{{-- Step-up sem MFA enrolado: bloqueia o login e instrui a configurar o MFA;
|
|
19
|
+
não renderiza o campo de código (não há 2º fator a desafiar). --}}
|
|
20
|
+
@if(!noEnrollment)
|
|
21
|
+
<div class="mt-6">
|
|
22
|
+
<label for="code" class="mb-1 block text-sm font-medium text-gray-700">{{ t('mfa_challenge.code_label') }}</label>
|
|
23
|
+
<input id="code" name="code" inputmode="numeric" autocomplete="one-time-code"
|
|
24
|
+
pattern="[0-9]*" maxlength="6" autofocus
|
|
25
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-center text-lg tracking-[0.4em] outline-none transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
@if(trustedDevicesEnabled)
|
|
29
|
+
<label class="mt-4 flex items-center gap-2 text-sm text-gray-600">
|
|
30
|
+
<input type="checkbox" name="trustDevice" value="on" class="h-4 w-4 rounded border-gray-300">
|
|
31
|
+
{{ t('mfa_challenge.trust_device', { days: trustedDeviceDays }) }}
|
|
32
|
+
</label>
|
|
33
|
+
@end
|
|
34
|
+
|
|
35
|
+
<button type="submit"
|
|
36
|
+
class="mt-6 w-full rounded-lg bg-gray-900 py-2.5 text-sm font-semibold text-white transition hover:opacity-90">
|
|
37
|
+
{{ t('mfa_challenge.submit') }}
|
|
38
|
+
</button>
|
|
39
|
+
@end
|
|
40
|
+
</form>
|
|
41
|
+
|
|
42
|
+
@if(passkeyAvailable && !noEnrollment)
|
|
43
|
+
{{-- Passkey como alternativa ao código TOTP. O form é submetido por página
|
|
44
|
+
inteira (não fetch) para que o 303 de volta ao client navegue o browser. --}}
|
|
45
|
+
<form id="passkey-form" method="POST" action="/auth/interaction/{{ uid }}/passkey/verify" class="mt-4">
|
|
46
|
+
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
47
|
+
<input type="hidden" name="response" id="passkey-response">
|
|
48
|
+
<input type="hidden" name="trustDevice" id="passkey-trust" value="">
|
|
49
|
+
</form>
|
|
50
|
+
<button type="button" id="passkey-button"
|
|
51
|
+
class="mt-4 w-full rounded-lg border border-gray-300 py-2.5 text-sm font-semibold text-gray-700 transition hover:bg-gray-50">
|
|
52
|
+
{{ t('mfa_challenge.passkey_button') }}
|
|
53
|
+
</button>
|
|
54
|
+
<p id="passkey-error" class="mt-3 hidden text-sm text-red-600">{{ t('mfa_challenge.passkey_error') }}</p>
|
|
55
|
+
@end
|
|
56
|
+
|
|
57
|
+
@if(!noEnrollment)
|
|
58
|
+
<details class="mt-6 text-sm text-gray-600">
|
|
59
|
+
<summary class="cursor-pointer hover:underline">{{ t('mfa_challenge.recovery_summary') }}</summary>
|
|
60
|
+
<form method="POST" action="/auth/interaction/{{ uid }}/mfa" class="mt-3">
|
|
61
|
+
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
62
|
+
<input name="recoveryCode" placeholder="xxxxx-xxxxx"
|
|
63
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-none focus:border-gray-900" />
|
|
64
|
+
<button type="submit"
|
|
65
|
+
class="mt-3 w-full rounded-lg border border-gray-300 py-2.5 text-sm font-semibold text-gray-700 transition hover:bg-gray-50">
|
|
66
|
+
{{ t('mfa_challenge.recovery_submit') }}
|
|
67
|
+
</button>
|
|
68
|
+
</form>
|
|
69
|
+
</details>
|
|
70
|
+
@end
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
@if(passkeyAvailable)
|
|
74
|
+
<script type="module">
|
|
75
|
+
import { startAuthentication } from 'https://cdn.jsdelivr.net/npm/@simplewebauthn/browser@13/dist/bundle/index.js'
|
|
76
|
+
const btn = document.getElementById('passkey-button')
|
|
77
|
+
const errEl = document.getElementById('passkey-error')
|
|
78
|
+
const csrf = document.querySelector('#passkey-form input[name="_csrf"]').value
|
|
79
|
+
btn?.addEventListener('click', async () => {
|
|
80
|
+
errEl.classList.add('hidden')
|
|
81
|
+
btn.disabled = true
|
|
82
|
+
try {
|
|
83
|
+
// 1) Busca as opções de autenticação (challenge guardado na sessão server-side).
|
|
84
|
+
const res = await fetch('/auth/interaction/{{ uid }}/passkey/options', {
|
|
85
|
+
method: 'POST',
|
|
86
|
+
headers: { 'content-type': 'application/json', 'x-csrf-token': csrf },
|
|
87
|
+
body: JSON.stringify({}),
|
|
88
|
+
})
|
|
89
|
+
if (!res.ok) throw new Error('options')
|
|
90
|
+
const optionsJSON = await res.json()
|
|
91
|
+
// 2) Cerimônia no authenticator.
|
|
92
|
+
const assertion = await startAuthentication({ optionsJSON })
|
|
93
|
+
// 3) Submete a assertion como POST de página inteira (segue o 303).
|
|
94
|
+
document.getElementById('passkey-response').value = JSON.stringify(assertion)
|
|
95
|
+
// Carrega a escolha de "confiar neste dispositivo" para o form da passkey.
|
|
96
|
+
const trustChk = document.querySelector('input[name="trustDevice"][type="checkbox"]')
|
|
97
|
+
const trustHidden = document.getElementById('passkey-trust')
|
|
98
|
+
if (trustHidden) trustHidden.value = trustChk && trustChk.checked ? 'on' : ''
|
|
99
|
+
document.getElementById('passkey-form').submit()
|
|
100
|
+
} catch (e) {
|
|
101
|
+
errEl.classList.remove('hidden')
|
|
102
|
+
btn.disabled = false
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
</script>
|
|
106
|
+
@end
|
|
107
|
+
</body></html>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="{{ locale ?? 'en' }}"><head><meta charset="utf-8"><title>{{ t('otp_unlock.page_title') }}</title>
|
|
3
|
+
@include('authkit::partials/styles')
|
|
4
|
+
</head>
|
|
5
|
+
<body class="min-h-screen bg-gray-100 flex items-center justify-center p-4">
|
|
6
|
+
<div class="w-full max-w-sm">
|
|
7
|
+
<div class="rounded-2xl bg-white p-8 shadow-sm ring-1 ring-black/5 text-center">
|
|
8
|
+
@if(ok)
|
|
9
|
+
<div class="mb-4 flex justify-center">
|
|
10
|
+
<span class="inline-flex h-12 w-12 items-center justify-center rounded-full bg-emerald-100 text-emerald-600">
|
|
11
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
|
12
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7" />
|
|
13
|
+
</svg>
|
|
14
|
+
</span>
|
|
15
|
+
</div>
|
|
16
|
+
<h1 class="mb-2 text-lg font-semibold text-gray-900">{{ t('otp_unlock.ok_title') }}</h1>
|
|
17
|
+
<p class="mb-6 text-sm text-gray-600">{{ t('otp_unlock.ok_body') }}</p>
|
|
18
|
+
<a href="/account/login" class="inline-block rounded-lg bg-gray-900 px-4 py-2 text-sm font-medium text-white hover:bg-gray-700">{{ t('otp_unlock.login_link') }}</a>
|
|
19
|
+
@else
|
|
20
|
+
<div class="mb-4 flex justify-center">
|
|
21
|
+
<span class="inline-flex h-12 w-12 items-center justify-center rounded-full bg-red-100 text-red-600">
|
|
22
|
+
<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
|
23
|
+
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
|
|
24
|
+
</svg>
|
|
25
|
+
</span>
|
|
26
|
+
</div>
|
|
27
|
+
<h1 class="mb-2 text-lg font-semibold text-gray-900">{{ t('otp_unlock.invalid_title') }}</h1>
|
|
28
|
+
<p class="mb-6 text-sm text-gray-600">
|
|
29
|
+
@if(expired)
|
|
30
|
+
{{ t('otp_unlock.expired_body') }}
|
|
31
|
+
@else
|
|
32
|
+
{{ t('otp_unlock.invalid_body') }}
|
|
33
|
+
@end
|
|
34
|
+
</p>
|
|
35
|
+
<a href="/account/login" class="inline-block rounded-lg bg-gray-900 px-4 py-2 text-sm font-medium text-white hover:bg-gray-700">{{ t('otp_unlock.login_link') }}</a>
|
|
36
|
+
@end
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</body>
|
|
40
|
+
</html>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
{{-- Gerado por scripts/build_host_css.mjs — não editar à mão. --}}
|
|
2
|
+
<style>*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-6{margin-left:1.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.h-12{height:3rem}.h-16{height:4rem}.h-20{height:5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-48{height:12rem}.h-6{height:1.5rem}.h-px{height:1px}.min-h-screen{min-height:100vh}.w-12{width:3rem}.w-16{width:4rem}.w-24{width:6rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-6{width:1.5rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-100>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(243 244 246/var(--tw-divide-opacity,1))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-amber-300{--tw-border-opacity:1;border-color:rgb(252 211 77/var(--tw-border-opacity,1))}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-emerald-300{--tw-border-opacity:1;border-color:rgb(110 231 183/var(--tw-border-opacity,1))}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-900{--tw-bg-opacity:1;background-color:rgb(120 53 15/var(--tw-bg-opacity,1))}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-red-700{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.object-cover{-o-object-fit:cover;object-fit:cover}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tracking-\[0\.4em\]{letter-spacing:.4em}.tracking-wide{letter-spacing:.025em}.tracking-widest{letter-spacing:.1em}.text-amber-50{--tw-text-opacity:1;color:rgb(255 251 235/var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-emerald-900{--tw-text-opacity:1;color:rgb(6 78 59/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.opacity-50{opacity:.5}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-amber-200{--tw-ring-opacity:1;--tw-ring-color:rgb(253 230 138/var(--tw-ring-opacity,1))}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgb(0 0 0/var(--tw-ring-opacity,1))}.ring-black\/5{--tw-ring-color:rgba(0,0,0,.05)}.ring-emerald-200{--tw-ring-opacity:1;--tw-ring-color:rgb(167 243 208/var(--tw-ring-opacity,1))}.ring-gray-900{--tw-ring-opacity:1;--tw-ring-color:rgb(17 24 39/var(--tw-ring-opacity,1))}.ring-red-200{--tw-ring-opacity:1;--tw-ring-color:rgb(254 202 202/var(--tw-ring-opacity,1))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.last\:border-0:last-child{border-width:0}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.focus\:border-gray-400:focus{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.focus\:border-gray-900:focus{--tw-border-opacity:1;border-color:rgb(17 24 39/var(--tw-border-opacity,1))}.focus\:border-red-600:focus{--tw-border-opacity:1;border-color:rgb(220 38 38/var(--tw-border-opacity,1))}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-gray-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(156 163 175/var(--tw-ring-opacity,1))}.focus\:ring-gray-900:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(17 24 39/var(--tw-ring-opacity,1))}</style>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="pt-br"><head><meta charset="utf-8"><title>{{ t('reset.page_title') }}</title>
|
|
3
|
+
@include('authkit::partials/styles')
|
|
4
|
+
</head>
|
|
5
|
+
<body class="min-h-screen flex items-center justify-center bg-gray-50">
|
|
6
|
+
<div class="w-full max-w-sm bg-white p-8 rounded-2xl shadow-xl ring-1 ring-black/5">
|
|
7
|
+
@if(done)
|
|
8
|
+
<h1 class="text-xl font-semibold text-gray-900">{{ t('reset.done_title') }}</h1>
|
|
9
|
+
<p class="mt-2 text-sm text-gray-600">{{ t('reset.done_body') }}</p>
|
|
10
|
+
@else
|
|
11
|
+
<form method="POST" action="/auth/reset-password">
|
|
12
|
+
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
13
|
+
<input type="hidden" name="token" value="{{ token }}">
|
|
14
|
+
<h1 class="text-xl font-semibold text-gray-900">{{ t('reset.title') }}</h1>
|
|
15
|
+
<p class="mt-1 text-sm text-gray-500">{{ t('reset.intro') }}</p>
|
|
16
|
+
|
|
17
|
+
<div class="mt-6">
|
|
18
|
+
<label for="password" class="mb-1 block text-sm font-medium text-gray-700">{{ t('reset.password_label') }}</label>
|
|
19
|
+
<input id="password" name="password" type="password" required minlength="8"
|
|
20
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-none transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<button type="submit"
|
|
24
|
+
class="mt-6 w-full rounded-lg bg-gray-900 py-2.5 text-sm font-semibold text-white transition hover:opacity-90">
|
|
25
|
+
{{ t('reset.submit') }}
|
|
26
|
+
</button>
|
|
27
|
+
</form>
|
|
28
|
+
@end
|
|
29
|
+
</div>
|
|
30
|
+
</body></html>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="pt-br"><head><meta charset="utf-8"><title>{{ t('signup.page_title') }} — {{ brand && brand.appName ? brand.appName : t('common.app_fallback') }}</title>
|
|
3
|
+
@include('authkit::partials/styles')
|
|
4
|
+
@if(botProtection && botProtection.scriptUrl)
|
|
5
|
+
<script src="{{ botProtection.scriptUrl }}" async defer></script>
|
|
6
|
+
@end
|
|
7
|
+
</head>
|
|
8
|
+
<body class="min-h-screen flex items-center justify-center bg-gray-50">
|
|
9
|
+
<div class="w-full max-w-sm bg-white p-8 rounded-2xl shadow-xl ring-1 ring-black/5">
|
|
10
|
+
@if(registrationDisabled)
|
|
11
|
+
<h1 class="text-xl font-semibold text-gray-900">{{ t('signup.title') }}</h1>
|
|
12
|
+
<p class="mt-3 text-sm text-red-600">{{ registrationDisabledMessage }}</p>
|
|
13
|
+
<a href="/auth/interaction/{{ uid }}"
|
|
14
|
+
class="mt-4 block text-center text-sm text-gray-600 hover:underline">
|
|
15
|
+
{{ t('signup.have_account') }}
|
|
16
|
+
</a>
|
|
17
|
+
@else
|
|
18
|
+
<form method="POST" action="/auth/interaction/{{ uid }}/signup">
|
|
19
|
+
<input type="hidden" name="_csrf" value="{{ csrfToken }}">
|
|
20
|
+
<h1 class="text-xl font-semibold text-gray-900">{{ t('signup.title') }}</h1>
|
|
21
|
+
<p class="mt-1 text-sm text-gray-500">{{ t('signup.intro') }}</p>
|
|
22
|
+
|
|
23
|
+
@if(error)
|
|
24
|
+
<p class="mt-4 text-sm text-red-600">{{ error }}</p>
|
|
25
|
+
@end
|
|
26
|
+
|
|
27
|
+
<div class="mt-6">
|
|
28
|
+
<label for="fullName" class="mb-1 block text-sm font-medium text-gray-700">{{ t('signup.name_label') }}</label>
|
|
29
|
+
<input id="fullName" name="fullName" type="text" required
|
|
30
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-none transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<div class="mt-4">
|
|
34
|
+
<label for="email" class="mb-1 block text-sm font-medium text-gray-700">{{ t('signup.email_label') }}</label>
|
|
35
|
+
<input id="email" name="email" type="email" required
|
|
36
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-none transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div class="mt-4">
|
|
40
|
+
<label for="password" class="mb-1 block text-sm font-medium text-gray-700">{{ t('signup.password_label') }}</label>
|
|
41
|
+
<input id="password" name="password" type="password" required minlength="8"
|
|
42
|
+
class="w-full rounded-lg border border-gray-300 px-3 py-2 text-sm outline-none transition focus:border-gray-900 focus:ring-2 focus:ring-gray-900" />
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
{{-- Bot protection: container do widget (config-trusted; HTML do host renderizado raw). --}}
|
|
46
|
+
@if(botProtection && botProtection.html)
|
|
47
|
+
<div class="mt-4">{{{ botProtection.html }}}</div>
|
|
48
|
+
@end
|
|
49
|
+
|
|
50
|
+
<button type="submit"
|
|
51
|
+
class="mt-6 w-full rounded-lg bg-gray-900 py-2.5 text-sm font-semibold text-white transition hover:opacity-90">
|
|
52
|
+
{{ t('signup.submit') }}
|
|
53
|
+
</button>
|
|
54
|
+
|
|
55
|
+
<a href="/auth/interaction/{{ uid }}"
|
|
56
|
+
class="mt-4 block text-center text-sm text-gray-600 hover:underline">
|
|
57
|
+
{{ t('signup.have_account') }}
|
|
58
|
+
</a>
|
|
59
|
+
</form>
|
|
60
|
+
@end
|
|
61
|
+
</div>
|
|
62
|
+
</body></html>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="pt-br"><head><meta charset="utf-8"><title>{{ t('verify_email.page_title') }}</title>
|
|
3
|
+
@include('authkit::partials/styles')
|
|
4
|
+
</head>
|
|
5
|
+
<body class="min-h-screen flex items-center justify-center bg-gray-50">
|
|
6
|
+
<div class="w-full max-w-sm bg-white p-8 rounded-2xl shadow-xl ring-1 ring-black/5">
|
|
7
|
+
@if(verified)
|
|
8
|
+
<h1 class="text-xl font-semibold text-gray-900">{{ t('verify_email.verified_title') }}</h1>
|
|
9
|
+
<p class="mt-2 text-sm text-gray-600">{{ t('verify_email.verified_body') }}</p>
|
|
10
|
+
@else
|
|
11
|
+
<h1 class="text-xl font-semibold text-gray-900">{{ t('verify_email.invalid_title') }}</h1>
|
|
12
|
+
<p class="mt-2 text-sm text-gray-600">
|
|
13
|
+
{{ t('verify_email.invalid_body') }}
|
|
14
|
+
</p>
|
|
15
|
+
@end
|
|
16
|
+
</div>
|
|
17
|
+
</body></html>
|
package/build/index.d.ts
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
export { ensureAuthkitSchema } from './src/schema/ensure.js';
|
|
2
|
+
export { authkitCsrfExceptions } from './src/host/csrf.js';
|
|
3
|
+
export type { AuthkitCsrfOptions } from './src/host/csrf.js';
|
|
4
|
+
export { SettingLockedError, isSettingLocked, lockedSettingKeys, setLockedSettingKeys, resetLockedSettingKeys, deriveLockedSettingKeys, } from './src/host/config_locks.js';
|
|
5
|
+
export type { EnsureSchemaOptions, EnsureSchemaReport } from './src/schema/ensure.js';
|
|
6
|
+
export { defineConfig, adapters, toSeconds } from './src/define_config.js';
|
|
7
|
+
export { generatePatToken, hashPatToken } from './src/pat/pat_tokens.js';
|
|
8
|
+
export { withAuthUser } from './src/mixins/with_auth_user.js';
|
|
9
|
+
export { withCredentials } from './src/mixins/with_credentials.js';
|
|
10
|
+
export { withMfa } from './src/mixins/with_mfa.js';
|
|
11
|
+
export { OidcService } from './src/provider/oidc_service.js';
|
|
12
|
+
export { registerOidcRoutes } from './src/register_routes.js';
|
|
13
|
+
export type { AuthServerConfigInput, ResolvedServerConfig, DynamicRegistrationConfigInput, ResolvedDynamicRegistrationConfig, AdminConfigInput, ResolvedAdminConfig, AdminApiConfigInput, ResolvedAdminApiConfig, } from './src/define_config.js';
|
|
14
|
+
export { resolveAdmin, resolveAdminApi, resolveWebauthn, resolveDynamicRegistration } from './src/define_config.js';
|
|
15
|
+
export type { WebauthnConfigInput, ResolvedWebauthnConfig } from './src/define_config.js';
|
|
16
|
+
export { resolvePasswordless, resolveLogin } from './src/define_config.js';
|
|
17
|
+
export type { PasswordlessConfigInput, ResolvedPasswordlessConfig, LoginConfigInput, ResolvedLoginConfig, } from './src/define_config.js';
|
|
18
|
+
export { resolveTrustedDevices, isTrustedDeviceValid, buildTrustedDevicePayload, TRUSTED_DEVICE_COOKIE, } from './src/host/trusted_device.js';
|
|
19
|
+
export type { TrustedDevicesConfigInput, ResolvedTrustedDevicesConfig, TrustedDevicePayload, } from './src/host/trusted_device.js';
|
|
20
|
+
export { resolveBotProtection, botProtectionApplies, extractBotToken, verifyBotProtection, guardBotProtection, DEFAULT_BOT_TOKEN_FIELDS, } from './src/host/bot_protection.js';
|
|
21
|
+
export type { BotProtectionConfigInput, ResolvedBotProtectionConfig, BotProtectionVerifyInput, BotProtectionWidget, BotProtectionAction, } from './src/host/bot_protection.js';
|
|
22
|
+
export { lucidAccountStore, appKeyEncrypter } from './src/accounts/lucid_account_store.js';
|
|
23
|
+
export { lucidStores } from './src/accounts/lucid_stores.js';
|
|
24
|
+
export type { LucidStoresModels, LucidStoresOptions, LucidStoresResult, } from './src/accounts/lucid_stores.js';
|
|
25
|
+
export type { LucidAccountStoreOptions, AccountSecretEncrypter, } from './src/accounts/lucid_account_store.js';
|
|
26
|
+
export type { AccountStore, CoreAccountStore, AdminCapability, MfaCapability, WebauthnCapability, ProviderIdentityCapability, ProviderIdentitySummary, AccountSecurityCapability, AccountStatusCapability, ProfileCapability, MagicLinkCapability, EmailVerificationStatusCapability, AccountDeletionCapability, AccountImportCapability, ImportAccountInput, AuthAccount, CreateAccountInput, LinkProviderIdentityInput, ListAccountsParams, Paginated, PasskeySummary, } from './src/accounts/account_store.js';
|
|
27
|
+
export { supportsMfa, supportsPasskeys, supportsProviderIdentity, supportsAccountSecurity, supportsAccountStatus, supportsProfile, supportsMagicLink, supportsEmailVerificationStatus, supportsAccountDeletion, supportsAccountImport, } from './src/accounts/account_store.js';
|
|
28
|
+
export { PasswordManager, PasswordPolicyError, } from './src/password/password_manager.js';
|
|
29
|
+
export type { PasswordConfigInput, LegacyPasswordVerifier, PasswordVerifyResult, } from './src/password/password_manager.js';
|
|
30
|
+
export { checkPasswordPolicy, policyViolationParams, DEFAULT_PWNED_TIMEOUT_MS, } from './src/password/policy.js';
|
|
31
|
+
export type { ResolvedPasswordPolicy, ResolvedPasswordConfig, PasswordPolicyViolation, } from './src/password/policy.js';
|
|
32
|
+
export { isPasswordPwned, __setFetchForTests as __setPwnedFetchForTests } from './src/password/pwned.js';
|
|
33
|
+
export type { PwnedLogger, FetchLike as PwnedFetchLike } from './src/password/pwned.js';
|
|
34
|
+
export { withProviderIdentity } from './src/mixins/with_provider_identity.js';
|
|
35
|
+
export type { ProviderIdentityRow, ProviderIdentityClass, } from './src/mixins/with_provider_identity.js';
|
|
36
|
+
export { withWebauthnCredential } from './src/mixins/with_webauthn_credential.js';
|
|
37
|
+
export type { WebauthnCredentialRow, WebauthnCredentialClass, } from './src/mixins/with_webauthn_credential.js';
|
|
38
|
+
export { lucidPatStore } from './src/pat/lucid_pat_store.js';
|
|
39
|
+
export type { PatStore, PatRecord, IssuePatInput } from './src/pat/pat_store.js';
|
|
40
|
+
export { withPersonalAccessToken } from './src/mixins/with_personal_access_token.js';
|
|
41
|
+
export { lucidAuditSink } from './src/audit/lucid_audit_sink.js';
|
|
42
|
+
export type { AuditSink, AuditEvent, AuditEventType, StoredAuditEvent, ListAuditParams, AuditPage, } from './src/audit/audit_sink.js';
|
|
43
|
+
export { withAuditLog } from './src/mixins/with_audit_log.js';
|
|
44
|
+
export { composeAuditSink, resolveEvents, buildWebhookBody, signWebhookBody, } from './src/events/dispatcher.js';
|
|
45
|
+
export type { EventsConfigInput, ResolvedEventsConfig } from './src/events/dispatcher.js';
|
|
46
|
+
export { inertiaRenderer } from './src/host/renderers/inertia_renderer.js';
|
|
47
|
+
export type { AuthkitScreen } from './src/host/renderers/inertia_renderer.js';
|
|
48
|
+
export type { InertiaRendererOptions } from './src/host/renderers/inertia_renderer.js';
|
|
49
|
+
export { edgeRenderer } from './src/host/renderers/edge_renderer.js';
|
|
50
|
+
export { brandFor, isFirstParty } from './src/host/branding.js';
|
|
51
|
+
export type { BrandingConfig, ClientBrand } from './src/host/branding.js';
|
|
52
|
+
export { resolveMessages, translate, DEFAULT_MESSAGES, PT_BR_MESSAGES, BUILTIN_MESSAGES, DEFAULT_LOCALE, } from './src/host/i18n.js';
|
|
53
|
+
export type { I18nConfig, AuthMessages } from './src/host/i18n.js';
|
|
54
|
+
export type { AuthHostRenderer, AuthSocialConfig } from './src/define_config.js';
|
|
55
|
+
export { registerAuthHost } from './src/host/register_auth_host.js';
|
|
56
|
+
export type { AuthHostOptions } from './src/host/register_auth_host.js';
|
|
57
|
+
export { getAdminPrefix, setAdminPrefix, normalizeAdminPrefix, getAdminApiPrefix, setAdminApiPrefix, normalizeAdminApiPrefix, } from './src/host/admin_prefix.js';
|
|
58
|
+
export { resolveRateLimit, resolveNotifications } from './src/define_config.js';
|
|
59
|
+
export type { ResolvedNotificationsConfig, } from './src/define_config.js';
|
|
60
|
+
export type { RateLimitConfigInput, RateLimitBucket, ResolvedRateLimitConfig, } from './src/define_config.js';
|
|
61
|
+
export { createAuthThrottles } from './src/host/rate_limit.js';
|
|
62
|
+
export type { AuthThrottles, ThrottleMiddleware } from './src/host/rate_limit.js';
|
|
63
|
+
/**
|
|
64
|
+
* Admin services compartilhados pelo console (B6/HTML), pela Admin REST API (R6)
|
|
65
|
+
* e pelo driver `embedded` do @adonis-agora/authkit-sdk (in-process).
|
|
66
|
+
*/
|
|
67
|
+
export { AdminUsersService } from './src/host/admin_api/admin_users_service.js';
|
|
68
|
+
export { AdminOrgsService } from './src/host/admin_api/admin_orgs_service.js';
|
|
69
|
+
export type { OrgWithMemberCount, OrgDetail, CreateOrgInput as AdminCreateOrgInput, UpdateOrgInput as AdminUpdateOrgInput, AddMemberInput as AdminAddMemberInput, CreateInvitationInput as AdminCreateInvitationInput, } from './src/host/admin_api/admin_orgs_service.js';
|
|
70
|
+
export type { AdminActor, CreateUserInput as AdminCreateUserInput, CreateUserResult as AdminCreateUserResult, DeleteUserResult as AdminDeleteUserResult, } from './src/host/admin_api/admin_users_service.js';
|
|
71
|
+
export { AccountDeletionService } from './src/host/account_deletion_service.js';
|
|
72
|
+
export type { DeletionActor, DeletionResult, } from './src/host/account_deletion_service.js';
|
|
73
|
+
export { AccountExportService } from './src/host/account_export_service.js';
|
|
74
|
+
export type { AccountExport } from './src/host/account_export_service.js';
|
|
75
|
+
export { AdminClientsService } from './src/host/admin_clients_service.js';
|
|
76
|
+
export type { AdminClient, ClientInput as AdminClientInput, CreatedClient, TokenEndpointAuthMethod, } from './src/host/admin_clients_service.js';
|
|
77
|
+
export { AdminSessionsService } from './src/host/admin_sessions_service.js';
|
|
78
|
+
export type { AdminSession, AdminGrant, RevokeResult, } from './src/host/admin_sessions_service.js';
|
|
79
|
+
export { TokenVerifyService } from './src/host/admin_api/token_verify_service.js';
|
|
80
|
+
export type { VerifyResult } from './src/host/admin_api/token_verify_service.js';
|
|
81
|
+
export { enrichSessionsWithContext } from './src/host/session_context.js';
|
|
82
|
+
export { parseUserAgent } from './src/host/user_agent.js';
|
|
83
|
+
export type { ParsedUserAgent } from './src/host/user_agent.js';
|
|
84
|
+
export { resolveGeoSafe, GEO_RESOLVE_TIMEOUT_MS } from './src/host/geo.js';
|
|
85
|
+
export type { ResolveGeo } from './src/host/geo.js';
|
|
86
|
+
export { computeAdminStats } from './src/host/admin_stats_service.js';
|
|
87
|
+
export type { AdminStats, DailyPoint } from './src/host/admin_stats_service.js';
|
|
88
|
+
export { barChartSvg } from './src/host/svg_chart.js';
|
|
89
|
+
export { buildImpersonationPanel } from './src/host/impersonation.js';
|
|
90
|
+
export type { ImpersonationPanel } from './src/host/impersonation.js';
|
|
91
|
+
export { ACTIVE_ORG_COOKIE, ACTIVE_ORG_COOKIE_TTL, encodeActiveOrgCookie, decodeActiveOrgCookie, readActiveOrgFromKoaCtx, } from './src/host/active_org_cookie.js';
|
|
92
|
+
export { resolveOrganizations } from './src/define_config.js';
|
|
93
|
+
export type { OrganizationsConfigInput, ResolvedOrganizationsConfig, } from './src/define_config.js';
|
|
94
|
+
export { supportsOrganizations } from './src/accounts/account_store.js';
|
|
95
|
+
export type { OrganizationsCapability, OrgSummary, OrgMember, OrgInvitation, ActiveOrgInfo, } from './src/accounts/account_store.js';
|
|
96
|
+
/**
|
|
97
|
+
* Configure hook + stubsRoot resolvidos pelo `node ace configure @adonis-agora/authkit-server`.
|
|
98
|
+
* O comando do AdonisJS importa o entrypoint principal e procura por estes exports.
|
|
99
|
+
*/
|
|
100
|
+
export { configure } from './commands/configure.js';
|
|
101
|
+
export { stubsRoot } from './stubs/main.js';
|
|
102
|
+
export { RuntimeSettings, supportsSettings } from './src/host/runtime_settings.js';
|
|
103
|
+
export type { SettingsCapability, SettingRow, RuntimeSettingsOptions } from './src/host/runtime_settings.js';
|
|
104
|
+
export { buildKeysStatus, rotateNow } from './src/host/key_rotation_actions.js';
|
|
105
|
+
export type { KeysStatus as ServerKeysStatus } from './src/host/key_rotation_actions.js';
|
|
106
|
+
export { resolveEffectiveBotProtection, } from './src/host/bot_protection.js';
|
|
107
|
+
export type { BotProtectionSetting } from './src/host/bot_protection.js';
|
|
108
|
+
export { SETTING_KEYS, resolveEffectiveRegistration, resolveEffectiveRequireVerifiedEmail, resolveEffectiveMaintenanceMode, } from './src/host/runtime_toggles.js';
|
|
109
|
+
export type { SettingKey, RegistrationSetting, RequireVerifiedEmailSetting, MaintenanceModeSetting, ResolvedMaintenanceMode, } from './src/host/runtime_toggles.js';
|
|
110
|
+
export { resolveRegistration } from './src/define_config.js';
|
|
111
|
+
export type { RegistrationConfigInput, ResolvedRegistrationConfig, } from './src/define_config.js';
|
|
112
|
+
export { getAccountId, hasAccountSession, consoleLoginUrl, } from './src/host/console_session.js';
|
|
113
|
+
export { ACCOUNT_SESSION_KEY } from './src/host/middleware/account_auth.js';
|
|
114
|
+
export { SUDO_SESSION_KEY, SUDO_MODE_DEFAULTS, requireSudo, isSudoActive, markSudo, resolveEffectiveSudoMode, } from './src/host/sudo_mode.js';
|
|
115
|
+
export type { SudoModeSetting, ResolvedSudoModeSetting, } from './src/host/sudo_mode.js';
|
package/build/index.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export { ensureAuthkitSchema } from './src/schema/ensure.js';
|
|
2
|
+
export { authkitCsrfExceptions } from './src/host/csrf.js';
|
|
3
|
+
export { SettingLockedError, isSettingLocked, lockedSettingKeys, setLockedSettingKeys, resetLockedSettingKeys, deriveLockedSettingKeys, } from './src/host/config_locks.js';
|
|
4
|
+
export { defineConfig, adapters, toSeconds } from './src/define_config.js';
|
|
5
|
+
export { generatePatToken, hashPatToken } from './src/pat/pat_tokens.js';
|
|
6
|
+
export { withAuthUser } from './src/mixins/with_auth_user.js';
|
|
7
|
+
export { withCredentials } from './src/mixins/with_credentials.js';
|
|
8
|
+
export { withMfa } from './src/mixins/with_mfa.js';
|
|
9
|
+
export { OidcService } from './src/provider/oidc_service.js';
|
|
10
|
+
export { registerOidcRoutes } from './src/register_routes.js';
|
|
11
|
+
export { resolveAdmin, resolveAdminApi, resolveWebauthn, resolveDynamicRegistration } from './src/define_config.js';
|
|
12
|
+
export { resolvePasswordless, resolveLogin } from './src/define_config.js';
|
|
13
|
+
export { resolveTrustedDevices, isTrustedDeviceValid, buildTrustedDevicePayload, TRUSTED_DEVICE_COOKIE, } from './src/host/trusted_device.js';
|
|
14
|
+
export { resolveBotProtection, botProtectionApplies, extractBotToken, verifyBotProtection, guardBotProtection, DEFAULT_BOT_TOKEN_FIELDS, } from './src/host/bot_protection.js';
|
|
15
|
+
export { lucidAccountStore, appKeyEncrypter } from './src/accounts/lucid_account_store.js';
|
|
16
|
+
export { lucidStores } from './src/accounts/lucid_stores.js';
|
|
17
|
+
export { supportsMfa, supportsPasskeys, supportsProviderIdentity, supportsAccountSecurity, supportsAccountStatus, supportsProfile, supportsMagicLink, supportsEmailVerificationStatus, supportsAccountDeletion, supportsAccountImport, } from './src/accounts/account_store.js';
|
|
18
|
+
// Gerência de senha: lazy rehash + legacy verifier, política e checagem de vazamento.
|
|
19
|
+
export { PasswordManager, PasswordPolicyError, } from './src/password/password_manager.js';
|
|
20
|
+
export { checkPasswordPolicy, policyViolationParams, DEFAULT_PWNED_TIMEOUT_MS, } from './src/password/policy.js';
|
|
21
|
+
export { isPasswordPwned, __setFetchForTests as __setPwnedFetchForTests } from './src/password/pwned.js';
|
|
22
|
+
export { withProviderIdentity } from './src/mixins/with_provider_identity.js';
|
|
23
|
+
export { withWebauthnCredential } from './src/mixins/with_webauthn_credential.js';
|
|
24
|
+
export { lucidPatStore } from './src/pat/lucid_pat_store.js';
|
|
25
|
+
export { withPersonalAccessToken } from './src/mixins/with_personal_access_token.js';
|
|
26
|
+
export { lucidAuditSink } from './src/audit/lucid_audit_sink.js';
|
|
27
|
+
export { withAuditLog } from './src/mixins/with_audit_log.js';
|
|
28
|
+
export { composeAuditSink, resolveEvents, buildWebhookBody, signWebhookBody, } from './src/events/dispatcher.js';
|
|
29
|
+
export { inertiaRenderer } from './src/host/renderers/inertia_renderer.js';
|
|
30
|
+
export { edgeRenderer } from './src/host/renderers/edge_renderer.js';
|
|
31
|
+
export { brandFor, isFirstParty } from './src/host/branding.js';
|
|
32
|
+
export { resolveMessages, translate, DEFAULT_MESSAGES, PT_BR_MESSAGES, BUILTIN_MESSAGES, DEFAULT_LOCALE, } from './src/host/i18n.js';
|
|
33
|
+
export { registerAuthHost } from './src/host/register_auth_host.js';
|
|
34
|
+
export { getAdminPrefix, setAdminPrefix, normalizeAdminPrefix, getAdminApiPrefix, setAdminApiPrefix, normalizeAdminApiPrefix, } from './src/host/admin_prefix.js';
|
|
35
|
+
export { resolveRateLimit, resolveNotifications } from './src/define_config.js';
|
|
36
|
+
export { createAuthThrottles } from './src/host/rate_limit.js';
|
|
37
|
+
/**
|
|
38
|
+
* Admin services compartilhados pelo console (B6/HTML), pela Admin REST API (R6)
|
|
39
|
+
* e pelo driver `embedded` do @adonis-agora/authkit-sdk (in-process).
|
|
40
|
+
*/
|
|
41
|
+
export { AdminUsersService } from './src/host/admin_api/admin_users_service.js';
|
|
42
|
+
export { AdminOrgsService } from './src/host/admin_api/admin_orgs_service.js';
|
|
43
|
+
export { AccountDeletionService } from './src/host/account_deletion_service.js';
|
|
44
|
+
export { AccountExportService } from './src/host/account_export_service.js';
|
|
45
|
+
export { AdminClientsService } from './src/host/admin_clients_service.js';
|
|
46
|
+
export { AdminSessionsService } from './src/host/admin_sessions_service.js';
|
|
47
|
+
export { TokenVerifyService } from './src/host/admin_api/token_verify_service.js';
|
|
48
|
+
// Contexto de sessão (user-agent/geo) + métricas do dashboard.
|
|
49
|
+
export { enrichSessionsWithContext } from './src/host/session_context.js';
|
|
50
|
+
export { parseUserAgent } from './src/host/user_agent.js';
|
|
51
|
+
export { resolveGeoSafe, GEO_RESOLVE_TIMEOUT_MS } from './src/host/geo.js';
|
|
52
|
+
export { computeAdminStats } from './src/host/admin_stats_service.js';
|
|
53
|
+
export { barChartSvg } from './src/host/svg_chart.js';
|
|
54
|
+
export { buildImpersonationPanel } from './src/host/impersonation.js';
|
|
55
|
+
// Organizations (multi-tenancy)
|
|
56
|
+
export { ACTIVE_ORG_COOKIE, ACTIVE_ORG_COOKIE_TTL, encodeActiveOrgCookie, decodeActiveOrgCookie, readActiveOrgFromKoaCtx, } from './src/host/active_org_cookie.js';
|
|
57
|
+
export { resolveOrganizations } from './src/define_config.js';
|
|
58
|
+
export { supportsOrganizations } from './src/accounts/account_store.js';
|
|
59
|
+
/**
|
|
60
|
+
* Configure hook + stubsRoot resolvidos pelo `node ace configure @adonis-agora/authkit-server`.
|
|
61
|
+
* O comando do AdonisJS importa o entrypoint principal e procura por estes exports.
|
|
62
|
+
*/
|
|
63
|
+
export { configure } from './commands/configure.js';
|
|
64
|
+
export { stubsRoot } from './stubs/main.js';
|
|
65
|
+
// Runtime settings (capability-probed, optional table `auth_settings`).
|
|
66
|
+
export { RuntimeSettings, supportsSettings } from './src/host/runtime_settings.js';
|
|
67
|
+
// Key rotation actions — shared between the Admin REST API controller and the SDK embedded driver.
|
|
68
|
+
export { buildKeysStatus, rotateNow } from './src/host/key_rotation_actions.js';
|
|
69
|
+
export { resolveEffectiveBotProtection, } from './src/host/bot_protection.js';
|
|
70
|
+
// Runtime toggles (registration, require_verified_email, maintenance_mode).
|
|
71
|
+
export { SETTING_KEYS, resolveEffectiveRegistration, resolveEffectiveRequireVerifiedEmail, resolveEffectiveMaintenanceMode, } from './src/host/runtime_toggles.js';
|
|
72
|
+
export { resolveRegistration } from './src/define_config.js';
|
|
73
|
+
export { getAccountId, hasAccountSession, consoleLoginUrl, } from './src/host/console_session.js';
|
|
74
|
+
export { ACCOUNT_SESSION_KEY } from './src/host/middleware/account_auth.js';
|
|
75
|
+
// Sudo mode — helpers for host controllers that require step-up authentication.
|
|
76
|
+
export { SUDO_SESSION_KEY, SUDO_MODE_DEFAULTS, requireSudo, isSudoActive, markSudo, resolveEffectiveSudoMode, } from './src/host/sudo_mode.js';
|