@flowdular/sdk 0.2.4 → 0.3.1
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/.ai/agents/sandbox/business-manager.md +5 -1
- package/.ai/blueprints/author-spec/README.md +1 -1
- package/.ai/blueprints/author-spec/spec-requirements.yaml +44 -0
- package/.ai/blueprints/author-spec/steps.yaml +5 -5
- package/.ai/blueprints/author-spec/templates/module.yaml +99 -3
- package/.ai/blueprints/edit-module/gates.yaml +4 -0
- package/.ai/blueprints/edit-module/required-files.yaml +9 -0
- package/.ai/blueprints/new-module/gates.yaml +4 -0
- package/.ai/blueprints/new-module/spec-requirements.yaml +2 -2
- package/.ai/blueprints/release/gates.yaml +4 -0
- package/.ai/platform-capabilities.md +128 -0
- package/.ai/policies/capabilities.yaml +130 -3
- package/.ai/policies/path-ownership.yaml +5 -2
- package/.ai/policies/task-budgets.yaml +5 -3
- package/.ai/references/catalog/module.json +4 -4
- package/.ai/references/catalog/package.json +2 -2
- package/.ai/references/catalog/spec/module.yaml +5 -3
- package/.ai/references/catalog/src/platform.ts +2 -0
- package/.ai/references/catalog/src/services/catalog-service.ts +89 -1
- package/.ai/references/catalog/src/services/data-classes.ts +47 -0
- package/.ai/references/catalog/src/services/database-repository.ts +98 -1
- package/.ai/references/catalog/src/services/repository.ts +22 -1
- package/.ai/references/catalog/tests/data-classes.test.ts +157 -0
- package/.ai/references/catalog.provenance.json +12 -10
- package/.ai/skills/README.md +10 -0
- package/.ai/skills/agent-tool-design/SKILL.md +1 -2
- package/.ai/skills/auth-security-review/SKILL.md +1 -1
- package/.ai/skills/business-agent-design/SKILL.md +0 -1
- package/.ai/skills/cli-extension/SKILL.md +1 -1
- package/.ai/skills/deploy-operate/SKILL.md +119 -0
- package/.ai/skills/module-new/SKILL.md +29 -3
- package/.ai/skills/module-update/SKILL.md +9 -3
- package/.ai/skills/perf-audit/SKILL.md +0 -1
- package/.ai/skills/release-eject-pr/SKILL.md +0 -1
- package/.ai/skills/spec-interview/SKILL.md +120 -0
- package/.ai/skills/test-hardening/SKILL.md +1 -0
- package/.ai/skills/ux-design/SKILL.md +34 -3
- package/.ai/skills/variables/SKILL.md +0 -2
- package/.ai/skills/workflow-development/SKILL.md +0 -1
- package/AGENTS.md +4 -0
- package/docs/agent-contract.md +2 -2
- package/docs/design-system.md +185 -31
- package/modules/access/migrations/0001_access_core.down.sql +1 -0
- package/modules/access/migrations/0001_access_core.up.sql +28 -0
- package/modules/access/migrations/README.md +3 -0
- package/modules/access/module.json +33 -0
- package/modules/access/package.json +43 -0
- package/modules/access/spec/module.yaml +225 -0
- package/modules/access/src/acl/permissions.ts +6 -0
- package/modules/access/src/api/endpoints.ts +244 -0
- package/modules/access/src/client/ActivityView.tsrx +245 -0
- package/modules/access/src/client/AttestationsView.tsrx +176 -0
- package/modules/access/src/client/ReviewView.tsrx +586 -0
- package/modules/access/src/client/api.ts +132 -0
- package/modules/access/src/client/contribution.tsrx +41 -0
- package/modules/access/src/client/index.ts +41 -0
- package/modules/access/src/client/navigation.ts +57 -0
- package/modules/access/src/client/presentation.ts +69 -0
- package/modules/access/src/client/state.ts +72 -0
- package/modules/access/src/domain/types.ts +189 -0
- package/modules/access/src/index.ts +38 -0
- package/modules/access/src/platform.ts +60 -0
- package/modules/access/src/server/index.ts +42 -0
- package/modules/access/src/server/runtime.ts +105 -0
- package/modules/access/src/services/access-service.ts +298 -0
- package/modules/access/src/services/audit-window.ts +78 -0
- package/modules/access/src/services/auth-directory.ts +72 -0
- package/modules/access/src/services/changes.ts +91 -0
- package/modules/access/src/services/data-classes.ts +28 -0
- package/modules/access/src/services/database-repository.ts +185 -0
- package/modules/access/src/services/directory.ts +102 -0
- package/modules/access/src/services/index.ts +33 -0
- package/modules/access/src/services/list-exports.ts +150 -0
- package/modules/access/src/services/migration.ts +54 -0
- package/modules/access/src/services/repository.ts +30 -0
- package/modules/access/src/services/review.ts +178 -0
- package/modules/access/translations/en.json +155 -0
- package/modules/access/translations/pl.json +155 -0
- package/modules/agents/migrations/0022_credential_rotation_inventory.down.sql +2 -0
- package/modules/agents/migrations/0022_credential_rotation_inventory.up.sql +7 -0
- package/modules/agents/migrations/0023_agents_retention_indexes.down.sql +2 -0
- package/modules/agents/migrations/0023_agents_retention_indexes.up.sql +9 -0
- package/modules/agents/migrations/0024_agent_meter_refusals.down.sql +3 -0
- package/modules/agents/migrations/0024_agent_meter_refusals.up.sql +22 -0
- package/modules/agents/migrations/0025_agent_list_indexes.down.sql +3 -0
- package/modules/agents/migrations/0025_agent_list_indexes.up.sql +11 -0
- package/modules/agents/module.json +30 -4
- package/modules/agents/package.json +2 -1
- package/modules/agents/spec/module.yaml +63 -5
- package/modules/agents/src/api/endpoints.ts +291 -33
- package/modules/agents/src/cli/commands.json +11 -0
- package/modules/agents/src/cli/index.ts +45 -0
- package/modules/agents/src/client/AgentDashboardWidget.tsrx +19 -11
- package/modules/agents/src/client/AgentDefinitionList.tsrx +53 -10
- package/modules/agents/src/client/AgentPlaygroundView.tsrx +4 -4
- package/modules/agents/src/client/AgentProceduresView.tsrx +2 -2
- package/modules/agents/src/client/AgentRunsView.tsrx +143 -40
- package/modules/agents/src/client/AgentsView.tsrx +109 -33
- package/modules/agents/src/client/api.ts +99 -21
- package/modules/agents/src/client/state.ts +97 -0
- package/modules/agents/src/domain/types.ts +44 -4
- package/modules/agents/src/platform.ts +42 -0
- package/modules/agents/src/server/action-execution.ts +201 -106
- package/modules/agents/src/server/runtime.ts +32 -0
- package/modules/agents/src/services/agent-service.ts +158 -30
- package/modules/agents/src/services/credential-rotation.ts +185 -0
- package/modules/agents/src/services/credential-vault.ts +71 -46
- package/modules/agents/src/services/data-classes.ts +176 -0
- package/modules/agents/src/services/database-repository.ts +393 -101
- package/modules/agents/src/services/metering.ts +111 -0
- package/modules/agents/src/services/migration.ts +109 -0
- package/modules/agents/src/services/module-agent-preflight.ts +17 -9
- package/modules/agents/src/services/notifications.ts +98 -0
- package/modules/agents/src/services/provider-repository.ts +9 -18
- package/modules/agents/src/services/provider-service.ts +1 -9
- package/modules/agents/src/services/reports.ts +107 -0
- package/modules/agents/src/services/repository.ts +86 -6
- package/modules/agents/src/services/usage-service.ts +2 -0
- package/modules/agents/src/services/worker.ts +114 -4
- package/modules/agents/src/settings.ts +14 -3
- package/modules/agents/translations/en.json +14 -4
- package/modules/agents/translations/pl.json +14 -4
- package/modules/approvals/migrations/0001_approvals_core.down.sql +3 -0
- package/modules/approvals/migrations/0001_approvals_core.up.sql +78 -0
- package/modules/approvals/migrations/0002_approvals_expiry_routing_role.down.sql +2 -0
- package/modules/approvals/migrations/0002_approvals_expiry_routing_role.up.sql +19 -0
- package/modules/approvals/migrations/0003_approvals_retention_indexes.down.sql +6 -0
- package/modules/approvals/migrations/0003_approvals_retention_indexes.up.sql +14 -0
- package/modules/approvals/migrations/0004_approvals_inbox_keyset_indexes.down.sql +5 -0
- package/modules/approvals/migrations/0004_approvals_inbox_keyset_indexes.up.sql +12 -0
- package/modules/approvals/migrations/0005_approvals_grant_audit.down.sql +4 -0
- package/modules/approvals/migrations/0005_approvals_grant_audit.up.sql +20 -0
- package/modules/approvals/migrations/README.md +3 -0
- package/modules/approvals/module.json +34 -0
- package/modules/approvals/package.json +43 -0
- package/modules/approvals/spec/module.yaml +327 -0
- package/modules/approvals/src/acl/permissions.ts +7 -0
- package/modules/approvals/src/api/endpoints.ts +457 -0
- package/modules/approvals/src/client/ApprovalRequestDrawer.tsrx +138 -0
- package/modules/approvals/src/client/ApprovalsView.tsrx +562 -0
- package/modules/approvals/src/client/PendingCountWidget.tsrx +52 -0
- package/modules/approvals/src/client/api.ts +203 -0
- package/modules/approvals/src/client/approvals.css +51 -0
- package/modules/approvals/src/client/contribution.tsrx +44 -0
- package/modules/approvals/src/client/index.ts +26 -0
- package/modules/approvals/src/client/navigation.ts +39 -0
- package/modules/approvals/src/client/pending-count.ts +26 -0
- package/modules/approvals/src/client/presentation.ts +52 -0
- package/modules/approvals/src/client/state.ts +141 -0
- package/modules/approvals/src/domain/capability.ts +107 -0
- package/modules/approvals/src/domain/grant.ts +69 -0
- package/modules/approvals/src/domain/types.ts +168 -0
- package/modules/approvals/src/index.ts +61 -0
- package/modules/approvals/src/platform.ts +136 -0
- package/modules/approvals/src/server/index.ts +42 -0
- package/modules/approvals/src/server/runtime.ts +185 -0
- package/modules/approvals/src/services/approvals-service.ts +637 -0
- package/modules/approvals/src/services/callbacks.ts +75 -0
- package/modules/approvals/src/services/data-classes.ts +167 -0
- package/modules/approvals/src/services/database-repository.ts +783 -0
- package/modules/approvals/src/services/eligibility.ts +121 -0
- package/modules/approvals/src/services/expiry-runner.ts +81 -0
- package/modules/approvals/src/services/index.ts +31 -0
- package/modules/approvals/src/services/migration.ts +256 -0
- package/modules/approvals/src/services/notifications.ts +95 -0
- package/modules/approvals/src/services/repository.ts +169 -0
- package/modules/approvals/src/services/service-error.ts +70 -0
- package/modules/approvals/src/settings.ts +102 -0
- package/modules/approvals/translations/en.json +104 -0
- package/modules/approvals/translations/pl.json +104 -0
- package/modules/audit/migrations/0001_audit_core.down.sql +8 -0
- package/modules/audit/migrations/0001_audit_core.up.sql +107 -0
- package/modules/audit/migrations/0002_audit_sweep_routing_role.down.sql +2 -0
- package/modules/audit/migrations/0002_audit_sweep_routing_role.up.sql +21 -0
- package/modules/audit/migrations/0003_audit_export_request.down.sql +12 -0
- package/modules/audit/migrations/0003_audit_export_request.up.sql +40 -0
- package/modules/audit/migrations/0004_audit_hold_seal_erasure.down.sql +17 -0
- package/modules/audit/migrations/0004_audit_hold_seal_erasure.up.sql +192 -0
- package/modules/audit/migrations/0005_audit_event_format.down.sql +17 -0
- package/modules/audit/migrations/0005_audit_event_format.up.sql +60 -0
- package/modules/audit/migrations/0006_audit_own_class_walks.down.sql +3 -0
- package/modules/audit/migrations/0006_audit_own_class_walks.up.sql +14 -0
- package/modules/audit/migrations/README.md +3 -0
- package/modules/audit/module.json +32 -0
- package/modules/audit/package.json +49 -0
- package/modules/audit/spec/module.yaml +809 -0
- package/modules/audit/src/acl/permissions.ts +7 -0
- package/modules/audit/src/api/endpoints.ts +315 -0
- package/modules/audit/src/cli/commands.json +95 -0
- package/modules/audit/src/cli/index.ts +658 -0
- package/modules/audit/src/client/DataClassesView.tsrx +420 -0
- package/modules/audit/src/client/ExportsView.tsrx +256 -0
- package/modules/audit/src/client/HoldsView.tsrx +604 -0
- package/modules/audit/src/client/SweepsView.tsrx +251 -0
- package/modules/audit/src/client/api.ts +185 -0
- package/modules/audit/src/client/contribution.tsrx +52 -0
- package/modules/audit/src/client/index.ts +23 -0
- package/modules/audit/src/client/navigation.ts +74 -0
- package/modules/audit/src/client/presentation.ts +105 -0
- package/modules/audit/src/client/state.ts +86 -0
- package/modules/audit/src/domain/data-classes.ts +16 -0
- package/modules/audit/src/domain/types.ts +339 -0
- package/modules/audit/src/index.ts +76 -0
- package/modules/audit/src/platform.ts +44 -0
- package/modules/audit/src/server/index.ts +177 -0
- package/modules/audit/src/server/runtime.ts +303 -0
- package/modules/audit/src/services/anchor-key.ts +143 -0
- package/modules/audit/src/services/anchor-rotation.ts +147 -0
- package/modules/audit/src/services/audit-runners.ts +278 -0
- package/modules/audit/src/services/backup-guard.ts +95 -0
- package/modules/audit/src/services/database-repository.ts +1946 -0
- package/modules/audit/src/services/declared-classes.ts +64 -0
- package/modules/audit/src/services/erasure-port.ts +126 -0
- package/modules/audit/src/services/erasure-service.ts +770 -0
- package/modules/audit/src/services/export-directory.ts +106 -0
- package/modules/audit/src/services/export-service.ts +714 -0
- package/modules/audit/src/services/hold-service.ts +295 -0
- package/modules/audit/src/services/index.ts +17 -0
- package/modules/audit/src/services/migration.ts +658 -0
- package/modules/audit/src/services/own-classes.ts +318 -0
- package/modules/audit/src/services/platform-version.ts +23 -0
- package/modules/audit/src/services/repository.ts +495 -0
- package/modules/audit/src/services/retention-service.ts +191 -0
- package/modules/audit/src/services/seal-service.ts +769 -0
- package/modules/audit/src/services/service-error.ts +61 -0
- package/modules/audit/src/services/subject-keys.ts +90 -0
- package/modules/audit/src/services/sweep-service.ts +298 -0
- package/modules/audit/src/services/zip.ts +217 -0
- package/modules/audit/src/settings.ts +69 -0
- package/modules/audit/translations/en.json +210 -0
- package/modules/audit/translations/pl.json +210 -0
- package/modules/auth/README.md +77 -29
- package/modules/auth/migrations/0016_external_identities.up.sql +16 -0
- package/modules/auth/migrations/0017_mfa_key_id.up.sql +8 -0
- package/modules/auth/migrations/0018_retire_bundled_module_scopes.up.sql +29 -0
- package/modules/auth/migrations/0019_notifications_member_scopes.up.sql +44 -0
- package/modules/auth/migrations/0020_identity_providers.up.sql +61 -0
- package/modules/auth/migrations/0021_membership_status.up.sql +19 -0
- package/modules/auth/migrations/0022_auth_provider_scopes.up.sql +45 -0
- package/modules/auth/migrations/0023_enterprise_module_scopes.down.sql +19 -0
- package/modules/auth/migrations/0023_enterprise_module_scopes.up.sql +71 -0
- package/modules/auth/migrations/0024_approvals_member_scopes.down.sql +22 -0
- package/modules/auth/migrations/0024_approvals_member_scopes.up.sql +48 -0
- package/modules/auth/migrations/0025_audit_holds_owner_scope.down.sql +21 -0
- package/modules/auth/migrations/0025_audit_holds_owner_scope.up.sql +47 -0
- package/modules/auth/migrations/0026_auth_export_keyset_indexes.down.sql +6 -0
- package/modules/auth/migrations/0026_auth_export_keyset_indexes.up.sql +15 -0
- package/modules/auth/migrations/0027_workflow_automation_profile_scopes.down.sql +34 -0
- package/modules/auth/migrations/0027_workflow_automation_profile_scopes.up.sql +72 -0
- package/modules/auth/migrations/0028_auth_member_search_prefix_indexes.down.sql +6 -0
- package/modules/auth/migrations/0028_auth_member_search_prefix_indexes.up.sql +21 -0
- package/modules/auth/migrations/0029_reports_exports_access_scopes.down.sql +22 -0
- package/modules/auth/migrations/0029_reports_exports_access_scopes.up.sql +56 -0
- package/modules/auth/migrations/0030_auth_membership_keyset_index.down.sql +4 -0
- package/modules/auth/migrations/0030_auth_membership_keyset_index.up.sql +10 -0
- package/modules/auth/migrations/0031_membership_scope_backfills_under_rls.down.sql +4 -0
- package/modules/auth/migrations/0031_membership_scope_backfills_under_rls.up.sql +31 -0
- package/modules/auth/migrations/0032_audit_actor_service.down.sql +9 -0
- package/modules/auth/migrations/0032_audit_actor_service.up.sql +10 -0
- package/modules/auth/migrations/0033_auth_account_keyset_indexes.down.sql +5 -0
- package/modules/auth/migrations/0033_auth_account_keyset_indexes.up.sql +23 -0
- package/modules/auth/module.json +3 -3
- package/modules/auth/package.json +2 -1
- package/modules/auth/spec/module.yaml +372 -3
- package/modules/auth/src/acl/scopes.ts +50 -6
- package/modules/auth/src/cli/commands.json +11 -0
- package/modules/auth/src/cli/greenfield.ts +2 -2
- package/modules/auth/src/cli/index.ts +14 -0
- package/modules/auth/src/cli/secrets.ts +114 -0
- package/modules/auth/src/client/AuthenticationCore.tsrx +61 -8
- package/modules/auth/src/client/api.ts +72 -6
- package/modules/auth/src/client/contribution.tsrx +23 -0
- package/modules/auth/src/client/index.ts +6 -0
- package/modules/auth/src/client/providers/IdentityProviderForm.tsrx +191 -0
- package/modules/auth/src/client/providers/IdentityProvidersView.tsrx +358 -0
- package/modules/auth/src/client/providers/api.ts +128 -0
- package/modules/auth/src/client/providers/provider-columns.tsrx +60 -0
- package/modules/auth/src/client/providers/state.ts +35 -0
- package/modules/auth/src/client/security/SecurityView.tsrx +9 -1
- package/modules/auth/src/client/state.ts +15 -1
- package/modules/auth/src/domain/types.ts +55 -0
- package/modules/auth/src/index.ts +11 -1
- package/modules/auth/src/middleware/authentication.ts +4 -0
- package/modules/auth/src/server/endpoints.ts +467 -171
- package/modules/auth/src/server/http.ts +3 -2
- package/modules/auth/src/server/index.ts +22 -1
- package/modules/auth/src/server/membership-endpoints.ts +62 -0
- package/modules/auth/src/server/mfa-enforcement.ts +156 -0
- package/modules/auth/src/server/oidc.ts +389 -0
- package/modules/auth/src/server/provider-endpoints.ts +246 -0
- package/modules/auth/src/server/provider-host.ts +77 -0
- package/modules/auth/src/server/runtime.ts +231 -55
- package/modules/auth/src/services/auth-service-error.ts +7 -2
- package/modules/auth/src/services/auth-service.ts +948 -51
- package/modules/auth/src/services/data-classes.ts +236 -0
- package/modules/auth/src/services/database-repository.ts +853 -71
- package/modules/auth/src/services/identity-provider-service.ts +571 -0
- package/modules/auth/src/services/mail-delivery.ts +16 -16
- package/modules/auth/src/services/mail-message.ts +54 -0
- package/modules/auth/src/services/mail-port.ts +24 -0
- package/modules/auth/src/services/mail-smtp.ts +85 -0
- package/modules/auth/src/services/mfa-rotation.ts +144 -0
- package/modules/auth/src/services/migration.ts +810 -0
- package/modules/auth/src/services/password.ts +14 -0
- package/modules/auth/src/services/provider-secret-rotation.ts +169 -0
- package/modules/auth/src/services/provider-secrets.ts +136 -0
- package/modules/auth/src/services/repository.ts +321 -5
- package/modules/auth/src/services/session-sweep-runner.ts +73 -0
- package/modules/auth/src/services/settings-store.ts +10 -83
- package/modules/auth/src/services/totp.ts +88 -62
- package/modules/auth/src/services/validation.ts +194 -7
- package/modules/auth/src/settings.ts +18 -0
- package/modules/auth/translations/en.json +84 -1
- package/modules/auth/translations/pl.json +84 -1
- package/modules/automations/migrations/0005_secret_rotation_inventory.down.sql +1 -0
- package/modules/automations/migrations/0005_secret_rotation_inventory.up.sql +6 -0
- package/modules/automations/migrations/0006_automations_list_sort_indexes.down.sql +4 -0
- package/modules/automations/migrations/0006_automations_list_sort_indexes.up.sql +11 -0
- package/modules/automations/module.json +24 -6
- package/modules/automations/package.json +4 -1
- package/modules/automations/spec/module.yaml +81 -7
- package/modules/automations/src/api/endpoints.ts +202 -28
- package/modules/automations/src/cli/commands.json +17 -0
- package/modules/automations/src/cli/index.ts +114 -0
- package/modules/automations/src/client/AutomationScheduleForm.tsrx +77 -19
- package/modules/automations/src/client/AutomationSchedulesView.tsrx +144 -40
- package/modules/automations/src/client/AutomationTriggersView.tsrx +131 -32
- package/modules/automations/src/client/api.ts +62 -19
- package/modules/automations/src/client/presentation.ts +20 -2
- package/modules/automations/src/client/state.ts +84 -0
- package/modules/automations/src/domain/cadence.ts +99 -3
- package/modules/automations/src/domain/cron.ts +366 -0
- package/modules/automations/src/domain/time-zone.ts +61 -0
- package/modules/automations/src/platform.ts +38 -4
- package/modules/automations/src/server/index.ts +11 -0
- package/modules/automations/src/server/runtime.ts +46 -22
- package/modules/{automations-workflows-integration/src/server/adapter.ts → automations/src/server/workflow-target.ts} +13 -14
- package/modules/{automations-workflows-integration/src/server/tools.ts → automations/src/server/workflow-tools.ts} +0 -0
- package/modules/automations/src/services/data-classes.ts +62 -0
- package/modules/automations/src/services/database-repository.ts +152 -38
- package/modules/automations/src/services/migration.ts +119 -9
- package/modules/automations/src/services/repository.ts +52 -1
- package/modules/automations/src/services/schedule-runner.ts +84 -0
- package/modules/automations/src/services/schedule-service.ts +152 -26
- package/modules/automations/src/services/secret-rotation.ts +176 -0
- package/modules/automations/src/services/secret-vault.ts +68 -41
- package/modules/automations/src/services/trigger-service.ts +13 -10
- package/modules/automations/translations/en.json +15 -2
- package/modules/automations/translations/pl.json +15 -2
- package/modules/connectors/migrations/0001_connectors_core.down.sql +3 -0
- package/modules/connectors/migrations/0001_connectors_core.up.sql +72 -0
- package/modules/connectors/migrations/0002_connectors_call_keys.down.sql +3 -0
- package/modules/connectors/migrations/0002_connectors_call_keys.up.sql +18 -0
- package/modules/connectors/migrations/0003_connectors_rotation_inventory.down.sql +2 -0
- package/modules/connectors/migrations/0003_connectors_rotation_inventory.up.sql +19 -0
- package/modules/connectors/migrations/README.md +3 -0
- package/modules/connectors/module.json +32 -0
- package/modules/{automations-workflows-integration → connectors}/package.json +28 -26
- package/modules/connectors/spec/module.yaml +448 -0
- package/modules/connectors/src/acl/permissions.ts +6 -0
- package/modules/connectors/src/agent/tools.ts +180 -0
- package/modules/connectors/src/api/endpoints.ts +572 -0
- package/modules/connectors/src/cli/commands.json +17 -0
- package/modules/connectors/src/cli/index.ts +126 -0
- package/modules/connectors/src/client/ConnectorCallsView.tsrx +358 -0
- package/modules/connectors/src/client/ConnectorForm.tsrx +424 -0
- package/modules/connectors/src/client/ConnectorsView.tsrx +711 -0
- package/modules/connectors/src/client/api.ts +281 -0
- package/modules/connectors/src/client/consent.ts +48 -0
- package/modules/connectors/src/client/contribution.tsrx +37 -0
- package/modules/connectors/src/client/index.ts +22 -0
- package/modules/connectors/src/client/navigation.ts +42 -0
- package/modules/connectors/src/client/presentation.ts +38 -0
- package/modules/connectors/src/client/state.ts +175 -0
- package/modules/connectors/src/domain/calls.ts +70 -0
- package/modules/connectors/src/domain/definitions.ts +190 -0
- package/modules/connectors/src/domain/http-json.ts +68 -0
- package/modules/connectors/src/domain/types.ts +185 -0
- package/modules/connectors/src/index.ts +64 -0
- package/modules/connectors/src/platform.ts +56 -0
- package/modules/connectors/src/server/index.ts +66 -0
- package/modules/connectors/src/server/runtime.ts +163 -0
- package/modules/connectors/src/services/call-service.ts +903 -0
- package/modules/connectors/src/services/connectors-service.ts +653 -0
- package/modules/connectors/src/services/credential-rotation.ts +221 -0
- package/modules/connectors/src/services/credential-vault.ts +194 -0
- package/modules/connectors/src/services/data-classes.ts +158 -0
- package/modules/connectors/src/services/database-repository.ts +897 -0
- package/modules/connectors/src/services/egress.ts +261 -0
- package/modules/connectors/src/services/index.ts +19 -0
- package/modules/connectors/src/services/migration.ts +202 -0
- package/modules/connectors/src/services/repository.ts +175 -0
- package/modules/connectors/src/services/service-error.ts +46 -0
- package/modules/connectors/src/settings.ts +69 -0
- package/modules/connectors/translations/en.json +191 -0
- package/modules/connectors/translations/pl.json +191 -0
- package/modules/directory/migrations/0001_directory_core.down.sql +5 -0
- package/modules/directory/migrations/0001_directory_core.up.sql +111 -0
- package/modules/directory/migrations/README.md +3 -0
- package/modules/directory/module.json +27 -0
- package/modules/directory/package.json +46 -0
- package/modules/directory/spec/module.yaml +351 -0
- package/modules/directory/src/acl/permissions.ts +7 -0
- package/modules/directory/src/api/endpoints.ts +478 -0
- package/modules/directory/src/api/scim-endpoints.ts +516 -0
- package/modules/directory/src/client/GroupMappingsView.tsrx +430 -0
- package/modules/directory/src/client/ProvisioningLogView.tsrx +248 -0
- package/modules/directory/src/client/ScimTokensView.tsrx +587 -0
- package/modules/directory/src/client/api.ts +222 -0
- package/modules/directory/src/client/contribution.tsrx +46 -0
- package/modules/directory/src/client/index.ts +22 -0
- package/modules/directory/src/client/navigation.ts +57 -0
- package/modules/directory/src/client/presentation.ts +143 -0
- package/modules/directory/src/client/state.ts +173 -0
- package/modules/directory/src/domain/scim.ts +346 -0
- package/modules/directory/src/domain/types.ts +166 -0
- package/modules/directory/src/index.ts +44 -0
- package/modules/directory/src/platform.ts +43 -0
- package/modules/directory/src/server/index.ts +17 -0
- package/modules/directory/src/server/runtime.ts +124 -0
- package/modules/directory/src/services/auth-port.ts +127 -0
- package/modules/directory/src/services/data-classes.ts +41 -0
- package/modules/directory/src/services/database-repository.ts +1067 -0
- package/modules/directory/src/services/directory-service.ts +311 -0
- package/modules/directory/src/services/index.ts +43 -0
- package/modules/directory/src/services/migration.ts +146 -0
- package/modules/directory/src/services/provisioning-service.ts +1420 -0
- package/modules/directory/src/services/rate-limiter.ts +103 -0
- package/modules/directory/src/services/repository.ts +208 -0
- package/modules/directory/src/services/service-error.ts +42 -0
- package/modules/directory/src/services/token-service.ts +215 -0
- package/modules/directory/src/settings.ts +86 -0
- package/modules/directory/translations/en.json +185 -0
- package/modules/directory/translations/pl.json +185 -0
- package/modules/documents/migrations/0001_documents_core.down.sql +1 -0
- package/modules/documents/migrations/0001_documents_core.up.sql +35 -0
- package/modules/documents/migrations/0002_documents_files_page.down.sql +1 -0
- package/modules/documents/migrations/0002_documents_files_page.up.sql +6 -0
- package/modules/documents/migrations/0003_documents_rotation_inventory.down.sql +2 -0
- package/modules/documents/migrations/0003_documents_rotation_inventory.up.sql +18 -0
- package/modules/documents/migrations/README.md +3 -0
- package/modules/documents/module.json +32 -0
- package/modules/documents/package.json +50 -0
- package/modules/documents/spec/module.yaml +248 -0
- package/modules/documents/src/acl/permissions.ts +6 -0
- package/modules/documents/src/api/endpoints.ts +401 -0
- package/modules/documents/src/cli/commands.json +17 -0
- package/modules/documents/src/cli/index.ts +145 -0
- package/modules/documents/src/client/DocumentUploader.tsrx +148 -0
- package/modules/documents/src/client/DocumentsView.tsrx +540 -0
- package/modules/documents/src/client/api.ts +209 -0
- package/modules/documents/src/client/contribution.tsrx +29 -0
- package/modules/documents/src/client/download.ts +70 -0
- package/modules/documents/src/client/index.ts +22 -0
- package/modules/documents/src/client/navigation.ts +25 -0
- package/modules/documents/src/client/presentation.ts +110 -0
- package/modules/documents/src/client/state.ts +117 -0
- package/modules/documents/src/domain/attachments.ts +84 -0
- package/modules/documents/src/domain/types.ts +80 -0
- package/modules/documents/src/index.ts +46 -0
- package/modules/documents/src/platform.ts +61 -0
- package/modules/documents/src/server/index.ts +30 -0
- package/modules/documents/src/server/runtime.ts +107 -0
- package/modules/documents/src/services/attachments.ts +39 -0
- package/modules/documents/src/services/data-classes.ts +25 -0
- package/modules/documents/src/services/database-repository.ts +270 -0
- package/modules/documents/src/services/documents-service.ts +590 -0
- package/modules/documents/src/services/index.ts +18 -0
- package/modules/documents/src/services/migration.ts +117 -0
- package/modules/documents/src/services/repository.ts +58 -0
- package/modules/documents/src/services/storage-rotation.ts +157 -0
- package/modules/documents/src/settings.ts +107 -0
- package/modules/documents/translations/en.json +111 -0
- package/modules/documents/translations/pl.json +111 -0
- package/modules/exports/migrations/0001_exports_core.down.sql +2 -0
- package/modules/exports/migrations/0001_exports_core.up.sql +28 -0
- package/modules/exports/migrations/0002_exports_job_routing_role.down.sql +4 -0
- package/modules/exports/migrations/0002_exports_job_routing_role.up.sql +21 -0
- package/modules/exports/migrations/0003_exports_rotation_inventory.down.sql +1 -0
- package/modules/exports/migrations/0003_exports_rotation_inventory.up.sql +9 -0
- package/modules/exports/migrations/README.md +3 -0
- package/modules/exports/module.json +32 -0
- package/modules/exports/package.json +45 -0
- package/modules/exports/spec/module.yaml +230 -0
- package/modules/exports/src/acl/permissions.ts +6 -0
- package/modules/exports/src/api/endpoints.ts +211 -0
- package/modules/exports/src/cli/commands.json +17 -0
- package/modules/exports/src/cli/index.ts +145 -0
- package/modules/exports/src/client/ExportsView.tsrx +327 -0
- package/modules/exports/src/client/api.ts +133 -0
- package/modules/exports/src/client/contribution.tsrx +31 -0
- package/modules/exports/src/client/index.ts +20 -0
- package/modules/exports/src/client/navigation.ts +25 -0
- package/modules/exports/src/client/presentation.ts +53 -0
- package/modules/exports/src/client/state.ts +56 -0
- package/modules/exports/src/domain/lists.ts +29 -0
- package/modules/exports/src/domain/types.ts +120 -0
- package/modules/exports/src/index.ts +41 -0
- package/modules/exports/src/platform.ts +80 -0
- package/modules/exports/src/server/index.ts +50 -0
- package/modules/exports/src/server/runtime.ts +160 -0
- package/modules/exports/src/services/data-classes.ts +59 -0
- package/modules/exports/src/services/database-repository.ts +403 -0
- package/modules/exports/src/services/export-runner.ts +123 -0
- package/modules/exports/src/services/export-service.ts +356 -0
- package/modules/exports/src/services/index.ts +6 -0
- package/modules/exports/src/services/list-registry.ts +105 -0
- package/modules/exports/src/services/migration.ts +116 -0
- package/modules/exports/src/services/repository.ts +96 -0
- package/modules/exports/src/services/storage-rotation.ts +138 -0
- package/modules/exports/src/settings.ts +70 -0
- package/modules/exports/translations/en.json +69 -0
- package/modules/exports/translations/pl.json +69 -0
- package/modules/import/migrations/0001_import_core.down.sql +6 -0
- package/modules/import/migrations/0001_import_core.up.sql +61 -0
- package/modules/import/migrations/0002_import_job_routing_role.down.sql +4 -0
- package/modules/import/migrations/0002_import_job_routing_role.up.sql +20 -0
- package/modules/import/migrations/0003_import_jobs_export_index.down.sql +1 -0
- package/modules/import/migrations/0003_import_jobs_export_index.up.sql +7 -0
- package/modules/import/migrations/0004_import_jobs_traceparent.down.sql +1 -0
- package/modules/import/migrations/0004_import_jobs_traceparent.up.sql +7 -0
- package/modules/import/migrations/README.md +3 -0
- package/modules/import/module.json +37 -0
- package/modules/import/package.json +50 -0
- package/modules/import/spec/module.yaml +335 -0
- package/modules/import/src/acl/permissions.ts +6 -0
- package/modules/import/src/api/endpoints.ts +400 -0
- package/modules/import/src/client/ImportJobDrawer.tsrx +229 -0
- package/modules/import/src/client/ImportsView.tsrx +455 -0
- package/modules/import/src/client/NewImportForm.tsrx +274 -0
- package/modules/import/src/client/api.ts +243 -0
- package/modules/import/src/client/contribution.tsrx +29 -0
- package/modules/import/src/client/index.ts +23 -0
- package/modules/import/src/client/navigation.ts +25 -0
- package/modules/import/src/client/presentation.ts +59 -0
- package/modules/import/src/client/state.ts +43 -0
- package/modules/import/src/domain/csv.ts +258 -0
- package/modules/import/src/domain/ports.ts +157 -0
- package/modules/import/src/domain/types.ts +179 -0
- package/modules/import/src/index.ts +58 -0
- package/modules/import/src/platform.ts +60 -0
- package/modules/import/src/server/index.ts +49 -0
- package/modules/import/src/server/runtime.ts +158 -0
- package/modules/import/src/services/csv-source.ts +121 -0
- package/modules/import/src/services/data-classes.ts +63 -0
- package/modules/import/src/services/database-repository.ts +780 -0
- package/modules/import/src/services/import-runner.ts +127 -0
- package/modules/import/src/services/import-service.ts +872 -0
- package/modules/import/src/services/index.ts +6 -0
- package/modules/import/src/services/migration.ts +156 -0
- package/modules/import/src/services/port-registry.ts +158 -0
- package/modules/import/src/services/repository.ts +147 -0
- package/modules/import/src/settings.ts +70 -0
- package/modules/import/translations/en.json +175 -0
- package/modules/import/translations/pl.json +175 -0
- package/modules/metering/migrations/0001_metering_core.down.sql +6 -0
- package/modules/metering/migrations/0001_metering_core.up.sql +119 -0
- package/modules/metering/migrations/0002_metering_bucket_export.down.sql +3 -0
- package/modules/metering/migrations/0002_metering_bucket_export.up.sql +5 -0
- package/modules/metering/migrations/README.md +3 -0
- package/modules/metering/module.json +46 -0
- package/modules/metering/package.json +50 -0
- package/modules/metering/spec/module.yaml +269 -0
- package/modules/metering/src/acl/permissions.ts +5 -0
- package/modules/metering/src/api/endpoints.ts +104 -0
- package/modules/metering/src/cli/commands.json +28 -0
- package/modules/metering/src/cli/index.ts +246 -0
- package/modules/metering/src/client/LimitsView.tsrx +170 -0
- package/modules/metering/src/client/UsageSummaryWidget.tsrx +63 -0
- package/modules/metering/src/client/UsageView.tsrx +205 -0
- package/modules/metering/src/client/api.ts +91 -0
- package/modules/metering/src/client/contribution.tsrx +42 -0
- package/modules/metering/src/client/index.ts +26 -0
- package/modules/metering/src/client/navigation.ts +54 -0
- package/modules/metering/src/client/presentation.ts +63 -0
- package/modules/metering/src/client/state.ts +31 -0
- package/modules/metering/src/domain/meters.ts +100 -0
- package/modules/metering/src/domain/types.ts +71 -0
- package/modules/metering/src/index.ts +51 -0
- package/modules/metering/src/platform.ts +84 -0
- package/modules/metering/src/server/index.ts +40 -0
- package/modules/metering/src/server/runtime.ts +165 -0
- package/modules/metering/src/services/data-classes.ts +34 -0
- package/modules/metering/src/services/database-repository.ts +574 -0
- package/modules/metering/src/services/index.ts +9 -0
- package/modules/metering/src/services/meter-registry.ts +145 -0
- package/modules/metering/src/services/metering-service.ts +441 -0
- package/modules/metering/src/services/migration.ts +183 -0
- package/modules/metering/src/services/notifications.ts +75 -0
- package/modules/metering/src/services/reports.ts +105 -0
- package/modules/metering/src/services/repository.ts +132 -0
- package/modules/metering/src/services/service-error.ts +46 -0
- package/modules/metering/src/settings.ts +47 -0
- package/modules/metering/translations/en.json +68 -0
- package/modules/metering/translations/pl.json +68 -0
- package/modules/notifications/migrations/0001_notifications_core.down.sql +1 -0
- package/modules/notifications/migrations/0001_notifications_core.up.sql +26 -0
- package/modules/notifications/migrations/0002_notifications_preferences.down.sql +1 -0
- package/modules/notifications/migrations/0002_notifications_preferences.up.sql +17 -0
- package/modules/notifications/migrations/0003_notifications_webhook_subscriptions.down.sql +1 -0
- package/modules/notifications/migrations/0003_notifications_webhook_subscriptions.up.sql +30 -0
- package/modules/notifications/migrations/0004_notifications_deliveries.down.sql +1 -0
- package/modules/notifications/migrations/0004_notifications_deliveries.up.sql +35 -0
- package/modules/notifications/migrations/0005_notifications_delivery_routing_role.down.sql +2 -0
- package/modules/notifications/migrations/0005_notifications_delivery_routing_role.up.sql +17 -0
- package/modules/notifications/migrations/0006_notifications_delivery_title.down.sql +1 -0
- package/modules/notifications/migrations/0006_notifications_delivery_title.up.sql +11 -0
- package/modules/notifications/migrations/0007_notifications_secret_rotation_inventory.down.sql +2 -0
- package/modules/notifications/migrations/0007_notifications_secret_rotation_inventory.up.sql +19 -0
- package/modules/notifications/migrations/0008_notifications_delivery_claim.down.sql +8 -0
- package/modules/notifications/migrations/0008_notifications_delivery_claim.up.sql +19 -0
- package/modules/notifications/migrations/0009_notifications_kind_approvals.down.sql +16 -0
- package/modules/notifications/migrations/0009_notifications_kind_approvals.up.sql +18 -0
- package/modules/notifications/migrations/0010_notifications_kind_meter_threshold.down.sql +16 -0
- package/modules/notifications/migrations/0010_notifications_kind_meter_threshold.up.sql +18 -0
- package/modules/notifications/migrations/0011_notifications_retention_keyset.down.sql +5 -0
- package/modules/notifications/migrations/0011_notifications_retention_keyset.up.sql +15 -0
- package/modules/notifications/migrations/0012_notifications_email_channel.down.sql +12 -0
- package/modules/notifications/migrations/0012_notifications_email_channel.up.sql +38 -0
- package/modules/notifications/migrations/0013_notifications_list_pages.down.sql +5 -0
- package/modules/notifications/migrations/0013_notifications_list_pages.up.sql +13 -0
- package/modules/notifications/migrations/README.md +3 -0
- package/modules/notifications/module.json +32 -0
- package/modules/notifications/package.json +49 -0
- package/modules/notifications/spec/module.yaml +718 -0
- package/modules/notifications/src/acl/permissions.ts +11 -0
- package/modules/notifications/src/api/endpoints.ts +814 -0
- package/modules/notifications/src/cli/commands.json +17 -0
- package/modules/notifications/src/cli/index.ts +126 -0
- package/modules/notifications/src/client/DeliveriesView.tsrx +483 -0
- package/modules/notifications/src/client/FactList.tsrx +24 -0
- package/modules/notifications/src/client/NotificationPreferencesView.tsrx +240 -0
- package/modules/notifications/src/client/NotificationsInboxView.tsrx +592 -0
- package/modules/notifications/src/client/UnreadCountWidget.tsrx +62 -0
- package/modules/notifications/src/client/WebhookForm.tsrx +297 -0
- package/modules/notifications/src/client/WebhooksView.tsrx +637 -0
- package/modules/notifications/src/client/api.ts +382 -0
- package/modules/notifications/src/client/contribution.tsrx +83 -0
- package/modules/notifications/src/client/inbox.ts +41 -0
- package/modules/notifications/src/client/index.ts +29 -0
- package/modules/notifications/src/client/navigation.ts +92 -0
- package/modules/notifications/src/client/notifications.css +70 -0
- package/modules/notifications/src/client/presentation.ts +81 -0
- package/modules/notifications/src/client/state.ts +246 -0
- package/modules/notifications/src/client/unread-count.ts +26 -0
- package/modules/notifications/src/domain/locale.ts +47 -0
- package/modules/notifications/src/domain/publish.ts +46 -0
- package/modules/notifications/src/domain/types.ts +186 -0
- package/modules/notifications/src/index.ts +62 -0
- package/modules/notifications/src/platform.ts +85 -0
- package/modules/notifications/src/server/index.ts +82 -0
- package/modules/notifications/src/server/runtime.ts +251 -0
- package/modules/notifications/src/services/data-classes.ts +139 -0
- package/modules/notifications/src/services/database-repository.ts +1334 -0
- package/modules/notifications/src/services/delivery-payload.ts +93 -0
- package/modules/notifications/src/services/delivery-runner.ts +170 -0
- package/modules/notifications/src/services/delivery-service.ts +811 -0
- package/modules/notifications/src/services/egress.ts +239 -0
- package/modules/notifications/src/services/email-channel.ts +93 -0
- package/modules/notifications/src/services/index.ts +23 -0
- package/modules/notifications/src/services/migration.ts +572 -0
- package/modules/notifications/src/services/notifications-service.ts +297 -0
- package/modules/notifications/src/services/paging.ts +60 -0
- package/modules/notifications/src/services/publish-service.ts +133 -0
- package/modules/notifications/src/services/repository.ts +342 -0
- package/modules/notifications/src/services/secret-rotation.ts +177 -0
- package/modules/notifications/src/services/secret-vault.ts +168 -0
- package/modules/notifications/src/services/service-error.ts +67 -0
- package/modules/notifications/src/services/signature.ts +81 -0
- package/modules/notifications/src/services/webhook-service.ts +307 -0
- package/modules/notifications/src/settings.ts +130 -0
- package/modules/notifications/translations/en.json +255 -0
- package/modules/notifications/translations/pl.json +255 -0
- package/modules/profile/module.json +3 -3
- package/modules/profile/package.json +1 -1
- package/modules/profile/spec/module.yaml +3 -3
- package/modules/profile/src/services/database-repository.ts +3 -13
- package/modules/reports/module.json +28 -0
- package/modules/reports/package.json +42 -0
- package/modules/reports/spec/module.yaml +231 -0
- package/modules/reports/src/acl/permissions.ts +5 -0
- package/modules/reports/src/api/endpoints.ts +72 -0
- package/modules/reports/src/client/ReportsSummaryWidget.tsrx +52 -0
- package/modules/reports/src/client/ReportsView.tsrx +246 -0
- package/modules/reports/src/client/api.ts +65 -0
- package/modules/reports/src/client/contribution.tsrx +36 -0
- package/modules/reports/src/client/index.ts +18 -0
- package/modules/reports/src/client/navigation.ts +39 -0
- package/modules/reports/src/client/presentation.ts +123 -0
- package/modules/reports/src/client/state.ts +28 -0
- package/modules/reports/src/domain/providers.ts +115 -0
- package/modules/reports/src/domain/types.ts +44 -0
- package/modules/reports/src/index.ts +47 -0
- package/modules/reports/src/platform.ts +37 -0
- package/modules/reports/src/server/index.ts +21 -0
- package/modules/reports/src/server/runtime.ts +40 -0
- package/modules/reports/src/services/index.ts +17 -0
- package/modules/reports/src/services/provider-registry.ts +144 -0
- package/modules/reports/src/services/range.ts +65 -0
- package/modules/reports/src/services/reports-service.ts +316 -0
- package/modules/reports/src/services/service-error.ts +26 -0
- package/modules/reports/src/settings.ts +49 -0
- package/modules/reports/translations/en.json +35 -0
- package/modules/reports/translations/pl.json +35 -0
- package/modules/sandbox/module.json +4 -4
- package/modules/sandbox/package.json +1 -1
- package/modules/sandbox/spec/module.yaml +3 -3
- package/modules/sandbox/src/services/database-repository.ts +14 -23
- package/modules/sandbox/src/services/directory.ts +16 -0
- package/modules/sandbox/src/services/sandbox-service.ts +13 -11
- package/modules/search/migrations/0001_search_core.down.sql +1 -0
- package/modules/search/migrations/0001_search_core.up.sql +22 -0
- package/modules/search/migrations/0002_search_recent_export.down.sql +3 -0
- package/modules/search/migrations/0002_search_recent_export.up.sql +5 -0
- package/modules/search/migrations/README.md +3 -0
- package/modules/search/module.json +28 -0
- package/modules/search/package.json +43 -0
- package/modules/search/spec/module.yaml +177 -0
- package/modules/search/src/acl/permissions.ts +5 -0
- package/modules/search/src/api/endpoints.ts +221 -0
- package/modules/search/src/client/SearchView.tsrx +346 -0
- package/modules/search/src/client/api.ts +157 -0
- package/modules/search/src/client/contribution.tsrx +31 -0
- package/modules/search/src/client/index.ts +17 -0
- package/modules/search/src/client/navigation.ts +97 -0
- package/modules/search/src/client/search.css +56 -0
- package/modules/search/src/client/state.ts +113 -0
- package/modules/search/src/domain/data-classes.ts +73 -0
- package/modules/search/src/domain/providers.ts +88 -0
- package/modules/search/src/domain/types.ts +56 -0
- package/modules/search/src/index.ts +46 -0
- package/modules/search/src/platform.ts +42 -0
- package/modules/search/src/server/index.ts +25 -0
- package/modules/search/src/server/runtime.ts +123 -0
- package/modules/search/src/services/database-repository.ts +163 -0
- package/modules/search/src/services/index.ts +21 -0
- package/modules/search/src/services/migration.ts +65 -0
- package/modules/search/src/services/provider-registry.ts +137 -0
- package/modules/search/src/services/repository.ts +43 -0
- package/modules/search/src/services/search-service.ts +442 -0
- package/modules/search/src/services/service-error.ts +35 -0
- package/modules/search/src/settings.ts +68 -0
- package/modules/search/translations/en.json +45 -0
- package/modules/search/translations/pl.json +45 -0
- package/modules/system/module.json +2 -2
- package/modules/system/package.json +1 -1
- package/modules/system/spec/module.yaml +30 -3
- package/modules/system/src/client/FlagsPanel.tsrx +127 -0
- package/modules/system/src/client/ModuleSettingRow.tsrx +17 -7
- package/modules/system/src/client/ModuleSettingsSection.tsrx +10 -71
- package/modules/system/src/client/ModulesView.tsrx +91 -65
- package/modules/system/src/client/flags.ts +35 -0
- package/modules/system/src/client/index.ts +8 -0
- package/modules/system/src/client/navigation.ts +8 -0
- package/modules/system/src/client/settings-state.ts +159 -0
- package/modules/system/src/client/state.ts +2 -0
- package/modules/system/src/domain/time-zone.ts +105 -0
- package/modules/system/src/index.ts +12 -0
- package/modules/system/src/platform.ts +5 -1
- package/modules/system/src/server/endpoints.ts +72 -21
- package/modules/system/src/settings.ts +28 -0
- package/modules/system/translations/en.json +17 -0
- package/modules/system/translations/pl.json +17 -0
- package/modules/users/module.json +30 -4
- package/modules/users/package.json +4 -1
- package/modules/users/spec/module.yaml +290 -7
- package/modules/users/src/api/endpoints.ts +228 -15
- package/modules/users/src/client/InviteMemberForm.tsrx +2 -2
- package/modules/users/src/client/MemberDrawer.tsrx +142 -26
- package/modules/users/src/client/UserAccountForm.tsrx +2 -2
- package/modules/users/src/client/UsersView.tsrx +432 -71
- package/modules/users/src/client/api.ts +106 -12
- package/modules/users/src/client/contribution.tsrx +5 -0
- package/modules/users/src/client/member-columns.tsrx +22 -9
- package/modules/users/src/client/state.ts +172 -7
- package/modules/users/src/domain/lists.ts +9 -0
- package/modules/users/src/index.ts +11 -0
- package/modules/users/src/platform.ts +50 -1
- package/modules/users/src/services/member-export.ts +51 -0
- package/modules/users/src/services/member-import.ts +249 -0
- package/modules/users/src/services/member-search.ts +145 -0
- package/modules/users/src/services/users-service.ts +117 -4
- package/modules/users/translations/en.json +57 -8
- package/modules/users/translations/pl.json +57 -8
- package/modules/workflows/migrations/0004_payload_rotation_inventory.up.sql +17 -0
- package/modules/workflows/migrations/0005_workflows_human_approval.up.sql +28 -0
- package/modules/workflows/migrations/0006_workflows_retention_indexes.up.sql +11 -0
- package/modules/workflows/migrations/0007_workflows_erasure_subject_indexes.up.sql +17 -0
- package/modules/workflows/migrations/0008_workflows_subject_account.up.sql +24 -0
- package/modules/workflows/migrations/0009_workflows_definition_list_indexes.up.sql +9 -0
- package/modules/workflows/module.json +34 -6
- package/modules/workflows/package.json +2 -1
- package/modules/workflows/spec/module.yaml +26 -9
- package/modules/workflows/src/api/endpoints.ts +131 -25
- package/modules/workflows/src/cli/commands.json +17 -0
- package/modules/workflows/src/cli/index.ts +114 -0
- package/modules/workflows/src/client/WorkflowExecutionHistory.tsrx +36 -27
- package/modules/workflows/src/client/WorkflowInspector.tsrx +116 -0
- package/modules/workflows/src/client/WorkflowNodePalette.tsrx +1 -0
- package/modules/workflows/src/client/WorkflowsView.tsrx +236 -99
- package/modules/workflows/src/client/api.ts +54 -34
- package/modules/workflows/src/client/canvas-model.ts +12 -0
- package/modules/workflows/src/client/state.ts +95 -0
- package/modules/workflows/src/domain/events.ts +25 -11
- package/modules/workflows/src/domain/graph.ts +135 -1
- package/modules/workflows/src/domain/types.ts +91 -4
- package/modules/workflows/src/platform.ts +12 -0
- package/modules/workflows/src/server/runtime.ts +78 -5
- package/modules/workflows/src/services/approvals.ts +62 -0
- package/modules/workflows/src/services/cursors.ts +37 -0
- package/modules/workflows/src/services/data-classes.ts +232 -0
- package/modules/workflows/src/services/database-repository.ts +660 -171
- package/modules/workflows/src/services/migration.ts +240 -0
- package/modules/workflows/src/services/notifications.ts +98 -0
- package/modules/workflows/src/services/payload-codec.ts +51 -28
- package/modules/workflows/src/services/payload-rotation.ts +171 -0
- package/modules/workflows/src/services/repository.ts +123 -8
- package/modules/workflows/src/services/simulation.ts +7 -0
- package/modules/workflows/src/services/worker.ts +446 -25
- package/modules/workflows/src/services/workflows-service.ts +264 -103
- package/modules/workflows/translations/en.json +12 -4
- package/modules/workflows/translations/pl.json +12 -4
- package/modules.json +48 -4
- package/package.json +64 -6
- package/packages/client/package.json +1 -0
- package/packages/client/src/ApplicationShell.tsrx +43 -0
- package/packages/client/src/contributions.ts +55 -0
- package/packages/client/src/i18n/locales/en.json +5 -0
- package/packages/client/src/i18n/locales/pl.json +5 -0
- package/packages/client/src/index.ts +13 -1
- package/packages/client/src/routing.ts +22 -0
- package/packages/client/src/shell/CommandPalette.tsrx +223 -11
- package/packages/client/src/shell/command-search.ts +126 -0
- package/packages/client/src/shell/command.ts +30 -0
- package/packages/client/src/shell/navigation.ts +12 -0
- package/packages/client/src/shell/palette-keys.ts +27 -0
- package/packages/client/src/shell/shell.css +7 -0
- package/packages/contracts/schemas/module-spec.schema.json +287 -1
- package/packages/contracts/schemas/module.schema.json +25 -0
- package/packages/contracts/src/index.ts +144 -1
- package/packages/database/src/backup.ts +180 -0
- package/packages/database/src/decoders.ts +25 -0
- package/packages/database/src/index.ts +17 -0
- package/packages/database/src/migrations.ts +7 -0
- package/packages/database/src/record-history.ts +5 -14
- package/packages/harness/src/index.ts +2 -0
- package/packages/harness/src/runtime.ts +378 -2
- package/packages/harness/src/tool-adapters.ts +20 -9
- package/packages/kernel/src/acl.ts +179 -0
- package/packages/kernel/src/approval-grant.ts +310 -0
- package/packages/kernel/src/capability-registry.ts +69 -2
- package/packages/kernel/src/data-class-registry.ts +354 -0
- package/packages/kernel/src/index.ts +85 -4
- package/packages/kernel/src/keyring.ts +208 -0
- package/packages/kernel/src/module-compatibility.ts +35 -4
- package/packages/kernel/src/module-registry.ts +49 -2
- package/packages/kernel/src/module-settings.ts +189 -27
- package/packages/server/package.json +2 -1
- package/packages/server/src/composition.ts +38 -0
- package/packages/server/src/endpoint.ts +104 -47
- package/packages/server/src/export/csv.ts +34 -0
- package/packages/server/src/export/definition.ts +346 -0
- package/packages/server/src/export/index.ts +61 -0
- package/packages/server/src/export/run.ts +116 -0
- package/packages/server/src/index.ts +155 -0
- package/packages/server/src/jobs/index.ts +93 -0
- package/packages/server/src/jobs/runner.ts +486 -0
- package/packages/server/src/log.ts +291 -0
- package/packages/server/src/mail/config.ts +184 -0
- package/packages/server/src/mail/contracts.ts +251 -0
- package/packages/server/src/mail/index.ts +31 -0
- package/packages/server/src/mail/port.ts +101 -0
- package/packages/server/src/mail/smtp.ts +191 -0
- package/packages/server/src/mail/template.ts +105 -0
- package/packages/server/src/metrics.ts +447 -0
- package/packages/server/src/pagination.ts +246 -0
- package/packages/server/src/trace/context.ts +103 -0
- package/packages/server/src/trace/egress.ts +66 -0
- package/packages/server/src/trace/error-sink.ts +296 -0
- package/packages/server/src/trace/exporter.ts +295 -0
- package/packages/server/src/trace/index.ts +60 -0
- package/packages/server/src/trace/job-sink.ts +172 -0
- package/packages/server/src/trace/tracer.ts +338 -0
- package/packages/server/src/web.ts +5 -1
- package/packages/storage/package.json +40 -0
- package/packages/storage/src/config.ts +189 -0
- package/packages/storage/src/content-type.ts +124 -0
- package/packages/storage/src/contracts.ts +112 -0
- package/packages/storage/src/envelope.ts +238 -0
- package/packages/storage/src/index.ts +49 -0
- package/packages/storage/src/local.ts +75 -0
- package/packages/storage/src/port.ts +262 -0
- package/packages/storage/src/read-token.ts +130 -0
- package/packages/storage/src/reseal.ts +128 -0
- package/packages/storage/src/s3.ts +144 -0
- package/packages/storage/src/scanner.ts +22 -0
- package/packages/storage/src/sigv4.ts +104 -0
- package/packages/storage/src/store.ts +13 -0
- package/packages/ui/package.json +1 -0
- package/packages/ui/src/components/Button.tsrx +3 -0
- package/packages/ui/src/components/ConfirmDialog.tsrx +13 -2
- package/packages/ui/src/components/DateField.tsrx +92 -0
- package/packages/ui/src/components/DatePicker.tsrx +525 -0
- package/packages/ui/src/components/DateRangeField.tsrx +93 -0
- package/packages/ui/src/components/Drawer.tsrx +10 -1
- package/packages/ui/src/components/FileUpload.tsrx +158 -0
- package/packages/ui/src/components/Pagination.tsrx +130 -0
- package/packages/ui/src/components/Select.tsrx +78 -0
- package/packages/ui/src/components/Table.tsrx +498 -81
- package/packages/ui/src/components/Tabs.tsrx +53 -0
- package/packages/ui/src/components/ToastHost.tsrx +48 -0
- package/packages/ui/src/components/calendar.ts +243 -0
- package/packages/ui/src/components/date-field.ts +62 -0
- package/packages/ui/src/components/file-upload.ts +49 -0
- package/packages/ui/src/components/focus-trap.ts +62 -0
- package/packages/ui/src/components/pagination.ts +68 -0
- package/packages/ui/src/components/table-sorting.ts +49 -0
- package/packages/ui/src/components/tabs.ts +61 -0
- package/packages/ui/src/components/toast-store.ts +116 -0
- package/packages/ui/src/icons/Icon.tsrx +5 -0
- package/packages/ui/src/index.ts +45 -0
- package/packages/ui/src/styles/components.css +598 -0
- package/modules/automations-workflows-integration/module.json +0 -27
- package/modules/automations-workflows-integration/spec/module.yaml +0 -93
- package/modules/automations-workflows-integration/src/index.ts +0 -14
- package/modules/automations-workflows-integration/src/platform.ts +0 -24
- package/modules/automations-workflows-integration/src/server/index.ts +0 -11
- package/modules/automations-workflows-integration/translations/en.json +0 -21
- package/modules/automations-workflows-integration/translations/pl.json +0 -21
- package/modules/workflows/src/services/cursor-codec.ts +0 -62
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
createDecipheriv,
|
|
4
|
-
createHmac,
|
|
5
|
-
randomBytes,
|
|
6
|
-
timingSafeEqual,
|
|
7
|
-
} from 'node:crypto';
|
|
1
|
+
import { createHmac, randomBytes, timingSafeEqual } from 'node:crypto';
|
|
2
|
+
import { createKeyring, parsePreviousKeys } from '@flowdular/sdk/kernel';
|
|
8
3
|
import { AuthServiceError } from './auth-service-error.ts';
|
|
9
4
|
|
|
10
5
|
const BASE32 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';
|
|
@@ -67,69 +62,100 @@ export function verifyTotp(
|
|
|
67
62
|
return false;
|
|
68
63
|
}
|
|
69
64
|
|
|
65
|
+
/** The envelope columns of one enrolled factor. */
|
|
66
|
+
export interface SealedMfaSecret {
|
|
67
|
+
readonly keyId: string;
|
|
68
|
+
readonly ciphertext: string;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface MfaSecretVault {
|
|
72
|
+
/** Key id every new envelope is written with; stored rows may carry older ones. */
|
|
73
|
+
readonly keyId: string;
|
|
74
|
+
seal(secret: string): SealedMfaSecret;
|
|
75
|
+
/** `keyId` is absent on a row written before the key id column existed. */
|
|
76
|
+
open(ciphertext: string, keyId?: string | null): string;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function notConfigured(): AuthServiceError {
|
|
80
|
+
return new AuthServiceError(
|
|
81
|
+
'MFA_NOT_CONFIGURED',
|
|
82
|
+
'Multi-factor authentication is not configured for this deployment.',
|
|
83
|
+
503,
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function configurationInvalid(cause?: unknown): AuthServiceError {
|
|
88
|
+
return new AuthServiceError(
|
|
89
|
+
'MFA_CONFIGURATION_INVALID',
|
|
90
|
+
'The MFA configuration is invalid.',
|
|
91
|
+
500,
|
|
92
|
+
cause === undefined ? undefined : { cause },
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
70
96
|
function encryptionKey(value: string | undefined): Buffer {
|
|
71
|
-
if (!value)
|
|
72
|
-
throw new AuthServiceError(
|
|
73
|
-
'MFA_NOT_CONFIGURED',
|
|
74
|
-
'Multi-factor authentication is not configured for this deployment.',
|
|
75
|
-
503,
|
|
76
|
-
);
|
|
77
|
-
}
|
|
97
|
+
if (!value) throw notConfigured();
|
|
78
98
|
const key = Buffer.from(
|
|
79
99
|
value,
|
|
80
100
|
/^[0-9a-f]{64}$/i.test(value) ? 'hex' : 'base64url',
|
|
81
101
|
);
|
|
82
|
-
if (key.byteLength !== 32)
|
|
83
|
-
throw new AuthServiceError(
|
|
84
|
-
'MFA_NOT_CONFIGURED',
|
|
85
|
-
'Multi-factor authentication is not configured for this deployment.',
|
|
86
|
-
503,
|
|
87
|
-
);
|
|
88
|
-
}
|
|
102
|
+
if (key.byteLength !== 32) throw notConfigured();
|
|
89
103
|
return key;
|
|
90
104
|
}
|
|
91
105
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
106
|
+
/**
|
|
107
|
+
* The key set that protects enrolled TOTP secrets at rest: one current key that
|
|
108
|
+
* seals every new envelope, and the keys kept only to open the rows a rotation
|
|
109
|
+
* has not re-sealed yet. The stored envelope stays `iv.ciphertext.tag` in
|
|
110
|
+
* base64url exactly as rows written before the key id existed; only the id of
|
|
111
|
+
* the key moved, into its own column, so a row that carries none is opened by
|
|
112
|
+
* trying the ring in order.
|
|
113
|
+
*/
|
|
114
|
+
export function createMfaSecretVault(
|
|
115
|
+
current: string | undefined,
|
|
116
|
+
previous: readonly string[] = [],
|
|
117
|
+
): MfaSecretVault {
|
|
118
|
+
const keyring = createKeyring({
|
|
119
|
+
current: encryptionKey(current),
|
|
120
|
+
previous: previous.map((entry) => encryptionKey(entry)),
|
|
121
|
+
});
|
|
122
|
+
return {
|
|
123
|
+
keyId: keyring.keyId,
|
|
124
|
+
seal(secret) {
|
|
125
|
+
const sealed = keyring.seal(secret);
|
|
126
|
+
return {
|
|
127
|
+
keyId: sealed.keyId,
|
|
128
|
+
ciphertext: `${sealed.iv.toString('base64url')}.${sealed.ciphertext.toString('base64url')}.${sealed.tag.toString('base64url')}`,
|
|
129
|
+
};
|
|
130
|
+
},
|
|
131
|
+
open(ciphertext, keyId) {
|
|
132
|
+
const [ivValue, ciphertextValue, tagValue] = ciphertext.split('.');
|
|
133
|
+
if (!ivValue || !ciphertextValue || !tagValue) {
|
|
134
|
+
throw configurationInvalid();
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
return keyring
|
|
138
|
+
.open({
|
|
139
|
+
keyId: keyId ?? undefined,
|
|
140
|
+
iv: Buffer.from(ivValue, 'base64url'),
|
|
141
|
+
tag: Buffer.from(tagValue, 'base64url'),
|
|
142
|
+
ciphertext: Buffer.from(ciphertextValue, 'base64url'),
|
|
143
|
+
})
|
|
144
|
+
.toString('utf8');
|
|
145
|
+
} catch (error) {
|
|
146
|
+
/* The kernel code reaches a caller on the cause: a key that is simply
|
|
147
|
+
absent from the ring and a corrupt row are the same refusal here. */
|
|
148
|
+
throw configurationInvalid(error);
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
};
|
|
103
152
|
}
|
|
104
153
|
|
|
105
|
-
export function
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
'MFA_CONFIGURATION_INVALID',
|
|
113
|
-
'The MFA configuration is invalid.',
|
|
114
|
-
500,
|
|
115
|
-
);
|
|
116
|
-
try {
|
|
117
|
-
const decipher = createDecipheriv(
|
|
118
|
-
'aes-256-gcm',
|
|
119
|
-
encryptionKey(keyValue),
|
|
120
|
-
Buffer.from(ivValue, 'base64url'),
|
|
121
|
-
);
|
|
122
|
-
decipher.setAuthTag(Buffer.from(tagValue, 'base64url'));
|
|
123
|
-
return Buffer.concat([
|
|
124
|
-
decipher.update(Buffer.from(ciphertextValue, 'base64url')),
|
|
125
|
-
decipher.final(),
|
|
126
|
-
]).toString('utf8');
|
|
127
|
-
} catch (error) {
|
|
128
|
-
if (error instanceof AuthServiceError) throw error;
|
|
129
|
-
throw new AuthServiceError(
|
|
130
|
-
'MFA_CONFIGURATION_INVALID',
|
|
131
|
-
'The MFA configuration is invalid.',
|
|
132
|
-
500,
|
|
133
|
-
);
|
|
134
|
-
}
|
|
154
|
+
export function mfaSecretVaultFromEnvironment(
|
|
155
|
+
environment: NodeJS.ProcessEnv = process.env,
|
|
156
|
+
): MfaSecretVault {
|
|
157
|
+
return createMfaSecretVault(
|
|
158
|
+
environment.FD_AUTH_MFA_KEY,
|
|
159
|
+
parsePreviousKeys(environment.FD_AUTH_MFA_KEY_PREVIOUS, (entry) => entry),
|
|
160
|
+
);
|
|
135
161
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
CreateTenantMemberInput,
|
|
3
|
+
CreateTenantMemberWithoutPasswordInput,
|
|
3
4
|
SignInInput,
|
|
4
5
|
SignUpInput,
|
|
5
6
|
} from '../domain/types.ts';
|
|
@@ -51,15 +52,163 @@ export function validateEmailAddress(value: string): string {
|
|
|
51
52
|
return email;
|
|
52
53
|
}
|
|
53
54
|
|
|
55
|
+
/* The credentials that lead every published breach corpus: the hundred short
|
|
56
|
+
ones first, then the long entries that clear an ordinary minimum length and
|
|
57
|
+
would otherwise never reach this lookup. A fixed set, so the check is one
|
|
58
|
+
lookup and the list can never grow into a download at request time. Entries
|
|
59
|
+
are lowercase; the candidate is folded before the lookup. */
|
|
60
|
+
export const COMMON_PASSWORDS: ReadonlySet<string> = new Set([
|
|
61
|
+
'123456',
|
|
62
|
+
'password',
|
|
63
|
+
'123456789',
|
|
64
|
+
'12345678',
|
|
65
|
+
'12345',
|
|
66
|
+
'qwerty',
|
|
67
|
+
'1234567',
|
|
68
|
+
'111111',
|
|
69
|
+
'123123',
|
|
70
|
+
'abc123',
|
|
71
|
+
'1234567890',
|
|
72
|
+
'1234',
|
|
73
|
+
'iloveyou',
|
|
74
|
+
'000000',
|
|
75
|
+
'dragon',
|
|
76
|
+
'monkey',
|
|
77
|
+
'letmein',
|
|
78
|
+
'sunshine',
|
|
79
|
+
'princess',
|
|
80
|
+
'football',
|
|
81
|
+
'123321',
|
|
82
|
+
'654321',
|
|
83
|
+
'666666',
|
|
84
|
+
'7777777',
|
|
85
|
+
'121212',
|
|
86
|
+
'qwertyuiop',
|
|
87
|
+
'1q2w3e4r',
|
|
88
|
+
'555555',
|
|
89
|
+
'888888',
|
|
90
|
+
'admin',
|
|
91
|
+
'welcome',
|
|
92
|
+
'login',
|
|
93
|
+
'master',
|
|
94
|
+
'passw0rd',
|
|
95
|
+
'superman',
|
|
96
|
+
'batman',
|
|
97
|
+
'michael',
|
|
98
|
+
'jennifer',
|
|
99
|
+
'jordan',
|
|
100
|
+
'hunter',
|
|
101
|
+
'ranger',
|
|
102
|
+
'harley',
|
|
103
|
+
'shadow',
|
|
104
|
+
'baseball',
|
|
105
|
+
'soccer',
|
|
106
|
+
'trustno1',
|
|
107
|
+
'whatever',
|
|
108
|
+
'charlie',
|
|
109
|
+
'daniel',
|
|
110
|
+
'jessica',
|
|
111
|
+
'ashley',
|
|
112
|
+
'thomas',
|
|
113
|
+
'robert',
|
|
114
|
+
'andrew',
|
|
115
|
+
'matthew',
|
|
116
|
+
'joshua',
|
|
117
|
+
'hannah',
|
|
118
|
+
'nicole',
|
|
119
|
+
'amanda',
|
|
120
|
+
'samantha',
|
|
121
|
+
'buster',
|
|
122
|
+
'tigger',
|
|
123
|
+
'purple',
|
|
124
|
+
'orange',
|
|
125
|
+
'silver',
|
|
126
|
+
'chelsea',
|
|
127
|
+
'cheese',
|
|
128
|
+
'banana',
|
|
129
|
+
'zaq1zaq1',
|
|
130
|
+
'qazwsx',
|
|
131
|
+
'zxcvbnm',
|
|
132
|
+
'asdfgh',
|
|
133
|
+
'asdfghjkl',
|
|
134
|
+
'qwe123',
|
|
135
|
+
'123qwe',
|
|
136
|
+
'1qaz2wsx',
|
|
137
|
+
'password1',
|
|
138
|
+
'password123',
|
|
139
|
+
'pass123',
|
|
140
|
+
'admin123',
|
|
141
|
+
'root',
|
|
142
|
+
'guest',
|
|
143
|
+
'test',
|
|
144
|
+
'changeme',
|
|
145
|
+
'secret',
|
|
146
|
+
'freedom',
|
|
147
|
+
'killer',
|
|
148
|
+
'summer',
|
|
149
|
+
'maggie',
|
|
150
|
+
'pepper',
|
|
151
|
+
'ginger',
|
|
152
|
+
'cookie',
|
|
153
|
+
'flower',
|
|
154
|
+
'hello',
|
|
155
|
+
'starwars',
|
|
156
|
+
'computer',
|
|
157
|
+
'internet',
|
|
158
|
+
'access',
|
|
159
|
+
'mustang',
|
|
160
|
+
'corvette',
|
|
161
|
+
// Twelve characters and longer, sorted, so the list stays deduplicated.
|
|
162
|
+
'1234567890123',
|
|
163
|
+
'1qaz2wsx3edc',
|
|
164
|
+
'administrator',
|
|
165
|
+
'asdfghjkl123',
|
|
166
|
+
'changeme1234',
|
|
167
|
+
'iloveyou1234',
|
|
168
|
+
'letmein12345',
|
|
169
|
+
'password1234',
|
|
170
|
+
'passwordpassword',
|
|
171
|
+
'qazwsxedcrfv',
|
|
172
|
+
'qwerty123456',
|
|
173
|
+
'qwertyuiop12',
|
|
174
|
+
'welcome12345',
|
|
175
|
+
'zaq12wsxcde3',
|
|
176
|
+
]);
|
|
177
|
+
|
|
178
|
+
/* Below this an address fragment is too short to carry any of the address into
|
|
179
|
+
the password, and the rule would reject unrelated passwords. */
|
|
180
|
+
const MIN_EMAIL_FRAGMENT_LENGTH = 3;
|
|
181
|
+
|
|
182
|
+
export function emailLocalPart(email: string): string {
|
|
183
|
+
return normalizeEmail(email).split('@')[0] ?? '';
|
|
184
|
+
}
|
|
185
|
+
|
|
54
186
|
export function assertPasswordPolicy(
|
|
55
187
|
password: string,
|
|
56
188
|
minLength = DEFAULT_PASSWORD_MIN_LENGTH,
|
|
189
|
+
email?: string,
|
|
57
190
|
): void {
|
|
58
|
-
validatePassword(password, minLength);
|
|
191
|
+
validatePassword(password, minLength, email);
|
|
59
192
|
}
|
|
60
193
|
|
|
61
|
-
function validatePassword(
|
|
62
|
-
|
|
194
|
+
function validatePassword(
|
|
195
|
+
password: string,
|
|
196
|
+
minLength: number,
|
|
197
|
+
email?: string,
|
|
198
|
+
): void {
|
|
199
|
+
if (Buffer.byteLength(password, 'utf8') > 1024) {
|
|
200
|
+
throw new AuthServiceError('INVALID_INPUT', 'Password is too long.', 400);
|
|
201
|
+
}
|
|
202
|
+
/* Ahead of the length rule: a breached credential is refused on its own
|
|
203
|
+
code whether or not it also clears the configured minimum. */
|
|
204
|
+
const folded = password.trim().normalize('NFKC').toLowerCase();
|
|
205
|
+
if (COMMON_PASSWORDS.has(folded)) {
|
|
206
|
+
throw new AuthServiceError(
|
|
207
|
+
'PASSWORD_TOO_COMMON',
|
|
208
|
+
'Choose a password that does not appear on the list of most common passwords.',
|
|
209
|
+
400,
|
|
210
|
+
);
|
|
211
|
+
}
|
|
63
212
|
if (password.length < minLength) {
|
|
64
213
|
throw new AuthServiceError(
|
|
65
214
|
'INVALID_INPUT',
|
|
@@ -67,8 +216,16 @@ function validatePassword(password: string, minLength: number): void {
|
|
|
67
216
|
400,
|
|
68
217
|
);
|
|
69
218
|
}
|
|
70
|
-
|
|
71
|
-
|
|
219
|
+
const localPart = email === undefined ? '' : emailLocalPart(email);
|
|
220
|
+
if (
|
|
221
|
+
localPart.length >= MIN_EMAIL_FRAGMENT_LENGTH &&
|
|
222
|
+
folded.includes(localPart)
|
|
223
|
+
) {
|
|
224
|
+
throw new AuthServiceError(
|
|
225
|
+
'PASSWORD_CONTAINS_EMAIL',
|
|
226
|
+
'Password must not contain the local part of the email address.',
|
|
227
|
+
400,
|
|
228
|
+
);
|
|
72
229
|
}
|
|
73
230
|
}
|
|
74
231
|
|
|
@@ -101,7 +258,16 @@ export function validateSignIn(input: SignInInput): SignInInput {
|
|
|
101
258
|
validateEmail(email);
|
|
102
259
|
if (!input.password)
|
|
103
260
|
throw new AuthServiceError('INVALID_INPUT', 'Password is required.', 400);
|
|
104
|
-
return { email, password: input.password };
|
|
261
|
+
if (input.workspace === undefined) return { email, password: input.password };
|
|
262
|
+
const workspace = input.workspace.trim();
|
|
263
|
+
if (workspace.length === 0 || workspace.length > 128) {
|
|
264
|
+
throw new AuthServiceError(
|
|
265
|
+
'INVALID_INPUT',
|
|
266
|
+
'Workspace reference is invalid.',
|
|
267
|
+
400,
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
return { email, password: input.password, workspace };
|
|
105
271
|
}
|
|
106
272
|
|
|
107
273
|
export function validateSignUp(
|
|
@@ -112,7 +278,7 @@ export function validateSignUp(
|
|
|
112
278
|
const displayName = validateDisplayName(input.displayName);
|
|
113
279
|
const organizationSlug = validateWorkspaceSlug(input.organizationSlug);
|
|
114
280
|
validateEmail(email);
|
|
115
|
-
validatePassword(input.password, passwordMinLength);
|
|
281
|
+
validatePassword(input.password, passwordMinLength, email);
|
|
116
282
|
const organizationName = validateWorkspaceName(input.organizationName);
|
|
117
283
|
return {
|
|
118
284
|
email,
|
|
@@ -149,6 +315,27 @@ export function validateCreateTenantMember(
|
|
|
149
315
|
};
|
|
150
316
|
}
|
|
151
317
|
|
|
318
|
+
/**
|
|
319
|
+
* The same rules without the password one, for a member created with an
|
|
320
|
+
* unusable credential. Nothing about the password policy applies: there is no
|
|
321
|
+
* password to measure.
|
|
322
|
+
*/
|
|
323
|
+
export function validateCreateTenantMemberWithoutPassword(
|
|
324
|
+
input: CreateTenantMemberWithoutPasswordInput,
|
|
325
|
+
): CreateTenantMemberWithoutPasswordInput {
|
|
326
|
+
const email = normalizeEmail(input.email);
|
|
327
|
+
validateEmail(email);
|
|
328
|
+
if (!input.tenantId || input.tenantId.length > 128) {
|
|
329
|
+
throw new AuthServiceError('INVALID_INPUT', 'Tenant is invalid.', 400);
|
|
330
|
+
}
|
|
331
|
+
return {
|
|
332
|
+
tenantId: input.tenantId,
|
|
333
|
+
email,
|
|
334
|
+
displayName: validateDisplayName(input.displayName),
|
|
335
|
+
role: validateRoleKey(input.role),
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
|
|
152
339
|
export function validateRoleKey(value: string): string {
|
|
153
340
|
const key = value.trim();
|
|
154
341
|
if (!ROLE_KEY_PATTERN.test(key)) {
|
|
@@ -109,6 +109,18 @@ export function createAuthModuleSettings(
|
|
|
109
109
|
max: 200,
|
|
110
110
|
pattern: PROVIDER_LIST_PATTERN,
|
|
111
111
|
},
|
|
112
|
+
requireMfa: {
|
|
113
|
+
type: 'boolean',
|
|
114
|
+
defaultValue: false,
|
|
115
|
+
visibility: 'private',
|
|
116
|
+
client: false,
|
|
117
|
+
scope: 'tenant',
|
|
118
|
+
labelKey: 'auth.moduleSettings.requireMfa.label',
|
|
119
|
+
label: 'Require multi-factor authentication',
|
|
120
|
+
descriptionKey: 'auth.moduleSettings.requireMfa.description',
|
|
121
|
+
description:
|
|
122
|
+
'Members of this workspace must enrol an authenticator before any workspace API or page answers them. API tokens are exempt, and the deployment needs an MFA encryption key.',
|
|
123
|
+
},
|
|
112
124
|
defaultLocale: {
|
|
113
125
|
type: 'string',
|
|
114
126
|
defaultValue: locales[0]!,
|
|
@@ -138,6 +150,12 @@ export interface AuthSettings {
|
|
|
138
150
|
readonly passwordMinLength: number;
|
|
139
151
|
}
|
|
140
152
|
|
|
153
|
+
/** The auth.core settings a single workspace decides for itself. */
|
|
154
|
+
export interface AuthTenantSettings {
|
|
155
|
+
/** Members without a confirmed second factor are held at enrolment. */
|
|
156
|
+
readonly requireMfa: boolean;
|
|
157
|
+
}
|
|
158
|
+
|
|
141
159
|
export function parseProviderList(value: string): readonly string[] {
|
|
142
160
|
return [
|
|
143
161
|
...new Set(
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"common.never": "Never",
|
|
11
11
|
"common.none": "None",
|
|
12
12
|
"common.refresh": "Refresh",
|
|
13
|
+
"common.retry": "Try again",
|
|
13
14
|
"common.save": "Save",
|
|
14
15
|
"common.saved": "Saved",
|
|
15
16
|
"navigation.tokens": "API tokens",
|
|
@@ -243,6 +244,7 @@
|
|
|
243
244
|
"security.mfa.verify": "Verify and sign in",
|
|
244
245
|
"security.mfa.useRecovery": "Use a recovery code",
|
|
245
246
|
"security.mfa.useCode": "Use an authenticator code",
|
|
247
|
+
"security.mfa.requiredNotice": "This workspace requires multi-factor authentication. Enrol an authenticator app to regain access to the rest of the workspace.",
|
|
246
248
|
"security.mfa.errorLoad": "Could not load account security.",
|
|
247
249
|
"security.mfa.errorEnroll": "MFA setup could not be started.",
|
|
248
250
|
"security.mfa.errorConfirm": "The authenticator code could not be confirmed.",
|
|
@@ -258,6 +260,87 @@
|
|
|
258
260
|
"moduleSettings.passwordMinLength.description": "Applies to sign-up, member creation, and password changes.",
|
|
259
261
|
"moduleSettings.signInProviders.label": "Sign-in providers",
|
|
260
262
|
"moduleSettings.signInProviders.description": "Comma-separated external provider ids shown on the sign-in screen.",
|
|
263
|
+
"moduleSettings.requireMfa.label": "Require multi-factor authentication",
|
|
264
|
+
"moduleSettings.requireMfa.description": "Members of this workspace must enrol an authenticator before any workspace API or page answers them. API tokens are exempt, and the deployment needs an MFA encryption key.",
|
|
261
265
|
"moduleSettings.defaultLocale.label": "Default locale",
|
|
262
|
-
"moduleSettings.defaultLocale.description": "Language offered to new members of this workspace."
|
|
266
|
+
"moduleSettings.defaultLocale.description": "Language offered to new members of this workspace.",
|
|
267
|
+
"navigation.providers": "Identity providers",
|
|
268
|
+
"navigation.providersDescription": "Single sign-on for this workspace",
|
|
269
|
+
"providers.title": "Identity providers",
|
|
270
|
+
"providers.description": "Offer single sign-on on this workspace sign-in screen and decide who may join through it.",
|
|
271
|
+
"providers.new": "New provider",
|
|
272
|
+
"providers.open": "Open",
|
|
273
|
+
"providers.enable": "Enable",
|
|
274
|
+
"providers.disable": "Disable",
|
|
275
|
+
"providers.delete": "Delete provider",
|
|
276
|
+
"providers.loading": "Loading identity providers…",
|
|
277
|
+
"providers.note": "A client secret is stored sealed and never shown again; only its fingerprint is.",
|
|
278
|
+
"providers.denied": "Your current session cannot read the identity providers of this workspace.",
|
|
279
|
+
"providers.readOnly": "This provider cannot be changed from here.",
|
|
280
|
+
"providers.table.title": "Providers",
|
|
281
|
+
"providers.table.count": "{total} configured",
|
|
282
|
+
"providers.table.caption": "Identity providers offered on this sign-in screen",
|
|
283
|
+
"providers.search.placeholder": "Search providers or issuers",
|
|
284
|
+
"providers.search.label": "Search identity providers",
|
|
285
|
+
"providers.empty.title": "No workspace provider yet",
|
|
286
|
+
"providers.empty.hint": "Add one to let this workspace sign in through your own identity provider.",
|
|
287
|
+
"providers.empty.filteredTitle": "No matching providers",
|
|
288
|
+
"providers.empty.filteredHint": "Change the search phrase to see other providers.",
|
|
289
|
+
"providers.column.provider": "Provider",
|
|
290
|
+
"providers.column.issuer": "Issuer",
|
|
291
|
+
"providers.column.status": "Status",
|
|
292
|
+
"providers.column.fingerprint": "Secret",
|
|
293
|
+
"providers.status.active": "offered",
|
|
294
|
+
"providers.status.disabled": "disabled",
|
|
295
|
+
"providers.scope.platform": "platform provider",
|
|
296
|
+
"providers.scope.tenant": "workspace provider",
|
|
297
|
+
"providers.scope.platformHint": "This provider comes from the deployment configuration and is offered to every workspace.",
|
|
298
|
+
"providers.jit.on": "provisioning on",
|
|
299
|
+
"providers.jit.off": "provisioning off",
|
|
300
|
+
"providers.jit.detail": "New members from {domains} join as {role}.",
|
|
301
|
+
"providers.drawer.newTitle": "New identity provider",
|
|
302
|
+
"providers.drawer.newSubtitle": "The issuer is verified through its discovery document before it is saved.",
|
|
303
|
+
"providers.drawer.subtitle": "Workspace provider",
|
|
304
|
+
"providers.secret.rotate": "New client secret",
|
|
305
|
+
"providers.secret.rotateHelp": "Paste the secret the provider issued. It is sealed immediately and never shown again.",
|
|
306
|
+
"providers.secret.rotateAction": "Rotate secret",
|
|
307
|
+
"providers.secret.rotated": "The client secret was replaced.",
|
|
308
|
+
"providers.form.key": "Key",
|
|
309
|
+
"providers.form.keyHelp": "Lower-case letters, digits and hyphens; it appears in the sign-in link.",
|
|
310
|
+
"providers.form.label": "Name",
|
|
311
|
+
"providers.form.issuer": "Issuer",
|
|
312
|
+
"providers.form.issuerHelp": "The HTTPS issuer whose discovery document names it back.",
|
|
313
|
+
"providers.form.clientId": "Client id",
|
|
314
|
+
"providers.form.clientSecret": "Client secret",
|
|
315
|
+
"providers.form.clientSecretOnce": "Entered once. It is sealed at rest and never returned.",
|
|
316
|
+
"providers.form.clientSecretKeep": "Leave empty to keep the current secret.",
|
|
317
|
+
"providers.form.scopes": "Scopes",
|
|
318
|
+
"providers.form.scopesHelp": "Comma separated. openid and email are always requested.",
|
|
319
|
+
"providers.form.jit": "Create members on first sign-in",
|
|
320
|
+
"providers.form.jitHelp": "Off by default: without it, a person needs a membership before signing in.",
|
|
321
|
+
"providers.form.allowedDomains": "Allowed e-mail domains",
|
|
322
|
+
"providers.form.allowedDomainsHelp": "Comma separated. A verified address outside them is refused.",
|
|
323
|
+
"providers.form.jitRole": "Role for new members",
|
|
324
|
+
"providers.form.jitRoleHelp": "A role key of this workspace; member by default.",
|
|
325
|
+
"providers.form.secretNote": "The client secret is never displayed after saving.",
|
|
326
|
+
"providers.form.create": "Create provider",
|
|
327
|
+
"providers.error.request": "The request could not be completed.",
|
|
328
|
+
"providers.error.load": "The identity providers could not be loaded.",
|
|
329
|
+
"providers.error.save": "The provider could not be saved.",
|
|
330
|
+
"providers.error.rotate": "The client secret could not be replaced.",
|
|
331
|
+
"providers.error.status": "The provider status could not be changed.",
|
|
332
|
+
"providers.error.delete": "The provider could not be deleted.",
|
|
333
|
+
"signin.workspace.label": "Workspace id",
|
|
334
|
+
"signin.workspace.help": "Enter it to see the sign-in options of that workspace.",
|
|
335
|
+
"signin.workspace.entering": "Signing in to {workspace}.",
|
|
336
|
+
"mail.password-reset.subject": "Reset your password",
|
|
337
|
+
"mail.password-reset.intro": "A password reset was requested for this address. Open the link below to choose a new password.",
|
|
338
|
+
"mail.password-reset.action": "Reset your password",
|
|
339
|
+
"mail.tenant-invitation.subject": "You have been invited to a workspace",
|
|
340
|
+
"mail.tenant-invitation.intro": "You have been invited to a workspace. Open the link below to accept the invitation and set up your account.",
|
|
341
|
+
"mail.tenant-invitation.action": "Accept the invitation",
|
|
342
|
+
"mail.email-confirmation.subject": "Confirm your email address",
|
|
343
|
+
"mail.email-confirmation.intro": "Confirm this address to finish setting up your account. Open the link below to complete the confirmation.",
|
|
344
|
+
"mail.email-confirmation.action": "Confirm your address",
|
|
345
|
+
"mail.closing": "The link expires and can be used only once. If you did not expect this message, you can ignore it."
|
|
263
346
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
"common.never": "Nigdy",
|
|
11
11
|
"common.none": "Brak",
|
|
12
12
|
"common.refresh": "Odśwież",
|
|
13
|
+
"common.retry": "Spróbuj ponownie",
|
|
13
14
|
"common.save": "Zapisz",
|
|
14
15
|
"common.saved": "Zapisano",
|
|
15
16
|
"navigation.tokens": "Tokeny API",
|
|
@@ -243,6 +244,7 @@
|
|
|
243
244
|
"security.mfa.verify": "Zweryfikuj i zaloguj",
|
|
244
245
|
"security.mfa.useRecovery": "Użyj kodu odzyskiwania",
|
|
245
246
|
"security.mfa.useCode": "Użyj kodu z aplikacji",
|
|
247
|
+
"security.mfa.requiredNotice": "Ta przestrzeń robocza wymaga uwierzytelniania wieloskładnikowego. Zarejestruj aplikację uwierzytelniającą, aby odzyskać dostęp do pozostałych części przestrzeni roboczej.",
|
|
246
248
|
"security.mfa.errorLoad": "Nie udało się wczytać ustawień bezpieczeństwa konta.",
|
|
247
249
|
"security.mfa.errorEnroll": "Nie udało się rozpocząć konfiguracji MFA.",
|
|
248
250
|
"security.mfa.errorConfirm": "Nie udało się potwierdzić kodu z aplikacji.",
|
|
@@ -258,6 +260,87 @@
|
|
|
258
260
|
"moduleSettings.passwordMinLength.description": "Obowiązuje przy rejestracji, tworzeniu członków i zmianie hasła.",
|
|
259
261
|
"moduleSettings.signInProviders.label": "Dostawcy logowania",
|
|
260
262
|
"moduleSettings.signInProviders.description": "Identyfikatory zewnętrznych dostawców wyświetlanych na ekranie logowania, rozdzielone przecinkami.",
|
|
263
|
+
"moduleSettings.requireMfa.label": "Wymagaj uwierzytelniania wieloskładnikowego",
|
|
264
|
+
"moduleSettings.requireMfa.description": "Członkowie tej przestrzeni roboczej muszą zarejestrować aplikację uwierzytelniającą, zanim odpowie im jakiekolwiek API lub strona przestrzeni roboczej. Tokeny API są zwolnione, a wdrożenie potrzebuje klucza szyfrującego MFA.",
|
|
261
265
|
"moduleSettings.defaultLocale.label": "Domyślny język",
|
|
262
|
-
"moduleSettings.defaultLocale.description": "Język proponowany nowym członkom tej przestrzeni roboczej."
|
|
266
|
+
"moduleSettings.defaultLocale.description": "Język proponowany nowym członkom tej przestrzeni roboczej.",
|
|
267
|
+
"navigation.providers": "Dostawcy tożsamości",
|
|
268
|
+
"navigation.providersDescription": "Logowanie jednokrotne tego obszaru",
|
|
269
|
+
"providers.title": "Dostawcy tożsamości",
|
|
270
|
+
"providers.description": "Udostępnij logowanie jednokrotne na ekranie logowania tego obszaru i zdecyduj, kto może przez nie dołączyć.",
|
|
271
|
+
"providers.new": "Nowy dostawca",
|
|
272
|
+
"providers.open": "Otwórz",
|
|
273
|
+
"providers.enable": "Włącz",
|
|
274
|
+
"providers.disable": "Wyłącz",
|
|
275
|
+
"providers.delete": "Usuń dostawcę",
|
|
276
|
+
"providers.loading": "Wczytywanie dostawców tożsamości…",
|
|
277
|
+
"providers.note": "Sekret klienta jest przechowywany zaszyfrowany i nigdy nie jest pokazywany ponownie; widoczny jest tylko jego odcisk.",
|
|
278
|
+
"providers.denied": "Bieżąca sesja nie może odczytać dostawców tożsamości tego obszaru.",
|
|
279
|
+
"providers.readOnly": "Tego dostawcy nie można zmienić w tym miejscu.",
|
|
280
|
+
"providers.table.title": "Dostawcy",
|
|
281
|
+
"providers.table.count": "Skonfigurowani: {total}",
|
|
282
|
+
"providers.table.caption": "Dostawcy tożsamości dostępni na tym ekranie logowania",
|
|
283
|
+
"providers.search.placeholder": "Szukaj dostawców lub wystawców",
|
|
284
|
+
"providers.search.label": "Szukaj dostawców tożsamości",
|
|
285
|
+
"providers.empty.title": "Brak dostawcy obszaru",
|
|
286
|
+
"providers.empty.hint": "Dodaj dostawcę, aby ten obszar logował się przez Twojego dostawcę tożsamości.",
|
|
287
|
+
"providers.empty.filteredTitle": "Brak pasujących dostawców",
|
|
288
|
+
"providers.empty.filteredHint": "Zmień frazę wyszukiwania, aby zobaczyć innych.",
|
|
289
|
+
"providers.column.provider": "Dostawca",
|
|
290
|
+
"providers.column.issuer": "Wystawca",
|
|
291
|
+
"providers.column.status": "Status",
|
|
292
|
+
"providers.column.fingerprint": "Sekret",
|
|
293
|
+
"providers.status.active": "dostępny",
|
|
294
|
+
"providers.status.disabled": "wyłączony",
|
|
295
|
+
"providers.scope.platform": "dostawca platformy",
|
|
296
|
+
"providers.scope.tenant": "dostawca obszaru",
|
|
297
|
+
"providers.scope.platformHint": "Ten dostawca pochodzi z konfiguracji wdrożenia i jest dostępny w każdym obszarze.",
|
|
298
|
+
"providers.jit.on": "zakładanie kont włączone",
|
|
299
|
+
"providers.jit.off": "zakładanie kont wyłączone",
|
|
300
|
+
"providers.jit.detail": "Nowe osoby z domen {domains} dołączają jako {role}.",
|
|
301
|
+
"providers.drawer.newTitle": "Nowy dostawca tożsamości",
|
|
302
|
+
"providers.drawer.newSubtitle": "Wystawca jest weryfikowany przez dokument discovery przed zapisaniem.",
|
|
303
|
+
"providers.drawer.subtitle": "Dostawca obszaru",
|
|
304
|
+
"providers.secret.rotate": "Nowy sekret klienta",
|
|
305
|
+
"providers.secret.rotateHelp": "Wklej sekret wydany przez dostawcę. Zostanie od razu zaszyfrowany i nigdy nie będzie pokazany ponownie.",
|
|
306
|
+
"providers.secret.rotateAction": "Wymień sekret",
|
|
307
|
+
"providers.secret.rotated": "Sekret klienta został wymieniony.",
|
|
308
|
+
"providers.form.key": "Klucz",
|
|
309
|
+
"providers.form.keyHelp": "Małe litery, cyfry i myślniki; pojawia się w adresie logowania.",
|
|
310
|
+
"providers.form.label": "Nazwa",
|
|
311
|
+
"providers.form.issuer": "Wystawca",
|
|
312
|
+
"providers.form.issuerHelp": "Adres HTTPS wystawcy, którego dokument discovery wskazuje na niego samego.",
|
|
313
|
+
"providers.form.clientId": "Identyfikator klienta",
|
|
314
|
+
"providers.form.clientSecret": "Sekret klienta",
|
|
315
|
+
"providers.form.clientSecretOnce": "Podawany raz. Jest szyfrowany i nigdy nie jest zwracany.",
|
|
316
|
+
"providers.form.clientSecretKeep": "Zostaw puste, aby zachować bieżący sekret.",
|
|
317
|
+
"providers.form.scopes": "Zakresy",
|
|
318
|
+
"providers.form.scopesHelp": "Rozdzielone przecinkami. openid i email są zawsze wymagane.",
|
|
319
|
+
"providers.form.jit": "Zakładaj konta przy pierwszym logowaniu",
|
|
320
|
+
"providers.form.jitHelp": "Domyślnie wyłączone: bez tego osoba musi mieć wcześniej przypisany dostęp.",
|
|
321
|
+
"providers.form.allowedDomains": "Dozwolone domeny e-mail",
|
|
322
|
+
"providers.form.allowedDomainsHelp": "Rozdzielone przecinkami. Zweryfikowany adres spoza nich zostanie odrzucony.",
|
|
323
|
+
"providers.form.jitRole": "Rola nowych osób",
|
|
324
|
+
"providers.form.jitRoleHelp": "Klucz roli tego obszaru; domyślnie member.",
|
|
325
|
+
"providers.form.secretNote": "Sekret klienta nie jest pokazywany po zapisaniu.",
|
|
326
|
+
"providers.form.create": "Utwórz dostawcę",
|
|
327
|
+
"providers.error.request": "Nie udało się wykonać żądania.",
|
|
328
|
+
"providers.error.load": "Nie udało się wczytać dostawców tożsamości.",
|
|
329
|
+
"providers.error.save": "Nie udało się zapisać dostawcy.",
|
|
330
|
+
"providers.error.rotate": "Nie udało się wymienić sekretu klienta.",
|
|
331
|
+
"providers.error.status": "Nie udało się zmienić statusu dostawcy.",
|
|
332
|
+
"providers.error.delete": "Nie udało się usunąć dostawcy.",
|
|
333
|
+
"signin.workspace.label": "Identyfikator obszaru",
|
|
334
|
+
"signin.workspace.help": "Podaj go, aby zobaczyć opcje logowania tego obszaru.",
|
|
335
|
+
"signin.workspace.entering": "Logowanie do {workspace}.",
|
|
336
|
+
"mail.password-reset.subject": "Zresetuj swoje hasło",
|
|
337
|
+
"mail.password-reset.intro": "Dla tego adresu poproszono o zresetowanie hasła. Otwórz poniższy link, aby wybrać nowe hasło.",
|
|
338
|
+
"mail.password-reset.action": "Zresetuj hasło",
|
|
339
|
+
"mail.tenant-invitation.subject": "Zaproszenie do obszaru roboczego",
|
|
340
|
+
"mail.tenant-invitation.intro": "Otrzymałeś zaproszenie do obszaru roboczego. Otwórz poniższy link, aby przyjąć zaproszenie i skonfigurować konto.",
|
|
341
|
+
"mail.tenant-invitation.action": "Przyjmij zaproszenie",
|
|
342
|
+
"mail.email-confirmation.subject": "Potwierdź swój adres e-mail",
|
|
343
|
+
"mail.email-confirmation.intro": "Potwierdź ten adres, aby dokończyć zakładanie konta. Otwórz poniższy link, aby zakończyć potwierdzanie.",
|
|
344
|
+
"mail.email-confirmation.action": "Potwierdź adres",
|
|
345
|
+
"mail.closing": "Link wygasa i można go użyć tylko raz. Jeśli nie spodziewałeś się tej wiadomości, możesz ją zignorować."
|
|
263
346
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
REVOKE SELECT (secret_key_id) ON automations_triggers FROM coreloom_background;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
-- The rotation command has to find the triggers still sealed with a retired key
|
|
2
|
+
-- before it knows whose they are. The cross-tenant lookup already reads the two
|
|
3
|
+
-- routing columns; this adds the key id and nothing else. The nonce, the tag and
|
|
4
|
+
-- the ciphertext stay unreadable on this connection, and every row it re-seals
|
|
5
|
+
-- is read again under the tenant that row named.
|
|
6
|
+
GRANT SELECT (secret_key_id) ON automations_triggers TO coreloom_background;
|