[Feature] Persist governed file connector profiles and policies #18

Closed
opened 2026-07-08 08:36:09 +02:00 by zemion · 3 comments
Owner

Implement the settings-side connector profile model documented in the Connector Spaces wiki page.

Acceptance criteria:

  • Add database-backed file connector profiles with system and tenant scope.

  • Add database-backed connector policy rows with effective policy/explain output similar to mail profile policy.

  • Keep environment/JSON profiles as bootstrap compatibility input.

  • Expose CRUD/list/read endpoints for profiles and policies.

  • Enforce policy before profile creation/update and before browse/import/sync.
    Wiki: Connector Spaces

Implement the settings-side connector profile model documented in the Connector Spaces wiki page. Acceptance criteria: - Add database-backed file connector profiles with system and tenant scope. - Add database-backed connector policy rows with effective policy/explain output similar to mail profile policy. - Keep environment/JSON profiles as bootstrap compatibility input. - Expose CRUD/list/read endpoints for profiles and policies. - Enforce policy before profile creation/update and before browse/import/sync. Wiki: Connector Spaces
zemion added the
module/files
area/api
codex/ready
labels 2026-07-08 08:36:09 +02:00
Author
Owner

Progress update from the settings/profile implementation slice.\n\nDone:\n- Added database-backed file connector profiles with system and tenant scope.\n- Added encrypted stored password/token support while preserving env/JSON profiles as bootstrap compatibility input.\n- Added CRUD/list/read API endpoints for stored profiles and redacted responses with source_kind so bootstrap profiles are read-only in UI.\n- The profile policy JSON is enforced before browse/import/sync and before connector-space create/update.\n- Added System and Tenant admin settings sections for file connections, including endpoint, credentials, capabilities, allow/deny paths, provider metadata, and browse test.\n\nVerified with py_compile, connector API smoke test, migration repair test, core web UI production build, and live WebDAV/Nextcloud/SMB connector stack smoke.\n\nStill open for this issue: separate database-backed connector policy rows plus effective policy/explain UI similar to mail profile policy.

Progress update from the settings/profile implementation slice.\n\nDone:\n- Added database-backed file connector profiles with system and tenant scope.\n- Added encrypted stored password/token support while preserving env/JSON profiles as bootstrap compatibility input.\n- Added CRUD/list/read API endpoints for stored profiles and redacted responses with source_kind so bootstrap profiles are read-only in UI.\n- The profile policy JSON is enforced before browse/import/sync and before connector-space create/update.\n- Added System and Tenant admin settings sections for file connections, including endpoint, credentials, capabilities, allow/deny paths, provider metadata, and browse test.\n\nVerified with py_compile, connector API smoke test, migration repair test, core web UI production build, and live WebDAV/Nextcloud/SMB connector stack smoke.\n\nStill open for this issue: separate database-backed connector policy rows plus effective policy/explain UI similar to mail profile policy.
Author
Owner

Progress update: split file connector connections and credentials.

Done now:

  • Added database-backed file connector credentials with system/tenant scope, encrypted stored password/token fields, redacted list/read responses, and CRUD endpoints.

  • File connector profiles can bind a credential_profile_id; legacy inline/env credentials remain compatible for bootstrap profiles.

  • Runtime browse/import/sync now evaluates connection policy plus credential policy, including credential_ids rules.

  • Settings UI now has separate credential and connection sections; connections select a saved credential instead of editing secrets inline.Still open: explicit central connector policy rows plus effective-policy/explain UI similar to mail profile policy.

Progress update: split file connector connections and credentials. Done now: - Added database-backed file connector credentials with system/tenant scope, encrypted stored password/token fields, redacted list/read responses, and CRUD endpoints. - File connector profiles can bind a credential_profile_id; legacy inline/env credentials remain compatible for bootstrap profiles. - Runtime browse/import/sync now evaluates connection policy plus credential policy, including credential_ids rules. - Settings UI now has separate credential and connection sections; connections select a saved credential instead of editing secrets inline.Still open: explicit central connector policy rows plus effective-policy/explain UI similar to mail profile policy.
Author
Owner

Implemented the remaining central connector policy row/editor path.\n\nBackend:\n- Added file_connector_policies with system/tenant/user/group/campaign scope support.\n- Added GET/PUT /api/v1/files/connectors/policies/{scope_type} with local, parent, effective policy and source-step output.\n- Prepended effective central policy sources for browse/import/sync/link decisions.\n- Enforced central policy during connector profile and credential configuration writes.\n- Added lower-level limit validation for policy/profile/credential local policy fields.\n\nWebUI:\n- Added the settings-side connector policy editor for system and tenant scopes.\n- Supports allowed/denied connection IDs, credential IDs, providers, paths, endpoint URLs, and lower-level limit locks.\n\nVerification:\n- py_compile for touched backend files.\n- npm run build from govoplan-core/webui.\n- pytest tests/test_api_smoke.py::ApiSmokeTests::test_file_connector_profiles_are_governed_and_redacted.\n- pytest tests/test_database_migrations.py.\n- dev/connectors/smoke.py --require-smb against the Docker connector stack.

Implemented the remaining central connector policy row/editor path.\n\nBackend:\n- Added file_connector_policies with system/tenant/user/group/campaign scope support.\n- Added GET/PUT /api/v1/files/connectors/policies/{scope_type} with local, parent, effective policy and source-step output.\n- Prepended effective central policy sources for browse/import/sync/link decisions.\n- Enforced central policy during connector profile and credential configuration writes.\n- Added lower-level limit validation for policy/profile/credential local policy fields.\n\nWebUI:\n- Added the settings-side connector policy editor for system and tenant scopes.\n- Supports allowed/denied connection IDs, credential IDs, providers, paths, endpoint URLs, and lower-level limit locks.\n\nVerification:\n- py_compile for touched backend files.\n- npm run build from govoplan-core/webui.\n- pytest tests/test_api_smoke.py::ApiSmokeTests::test_file_connector_profiles_are_governed_and_redacted.\n- pytest tests/test_database_migrations.py.\n- dev/connectors/smoke.py --require-smb against the Docker connector stack.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: add-ideas/govoplan-files#18
No description provided.