Add native permission-aware file search source
This commit is contained in:
@@ -35,6 +35,7 @@ from govoplan_core.core.provider_governance import (
|
||||
ProviderObjectDeclaration,
|
||||
declared_module_architecture,
|
||||
)
|
||||
from govoplan_core.core.search import SearchSourceProviderRegistration
|
||||
from govoplan_core.core.views import ViewSurface
|
||||
from govoplan_core.db.base import Base
|
||||
from govoplan_files.backend.change_tracking import register_files_change_tracking
|
||||
@@ -44,6 +45,7 @@ from govoplan_files.backend.provider_state import (
|
||||
REMOTE_STORAGE_PROVIDER_ID,
|
||||
remote_storage_provider_states,
|
||||
)
|
||||
from govoplan_files.backend.search_source import create_files_search_source
|
||||
|
||||
register_files_change_tracking()
|
||||
|
||||
@@ -279,7 +281,7 @@ manifest = ModuleManifest(
|
||||
name="Files",
|
||||
version="0.1.9",
|
||||
required_capabilities=(CAPABILITY_AUTH_PRINCIPAL_RESOLVER, CAPABILITY_AUTH_PERMISSION_EVALUATOR),
|
||||
optional_dependencies=("campaigns", "encryption"),
|
||||
optional_dependencies=("campaigns", "encryption", "search"),
|
||||
provides_interfaces=(
|
||||
ModuleInterfaceProvider(name="files.access", version="0.1.6"),
|
||||
ModuleInterfaceProvider(name="files.campaign_attachments", version="0.1.6"),
|
||||
@@ -298,12 +300,24 @@ manifest = ModuleManifest(
|
||||
version_max_exclusive="2.0.0",
|
||||
optional=True,
|
||||
),
|
||||
ModuleInterfaceRequirement(
|
||||
name="search.source",
|
||||
version_min="1.0.0",
|
||||
version_max_exclusive="2.0.0",
|
||||
optional=True,
|
||||
),
|
||||
),
|
||||
permissions=PERMISSIONS,
|
||||
route_factory=_files_router,
|
||||
role_templates=ROLE_TEMPLATES,
|
||||
tenant_summary_providers=(_tenant_summary,),
|
||||
tenant_summary_batch_providers=(_tenant_summary_batch,),
|
||||
search_sources=(
|
||||
SearchSourceProviderRegistration(
|
||||
id="files.objects",
|
||||
factory=create_files_search_source,
|
||||
),
|
||||
),
|
||||
delete_veto_providers={"group": (_veto_group_delete,)},
|
||||
nav_items=(NavItem(path="/files", label="Files", icon="folder", required_any=("files:file:read",), order=40),),
|
||||
frontend=FrontendModule(
|
||||
@@ -329,6 +343,23 @@ manifest = ModuleManifest(
|
||||
),
|
||||
),
|
||||
documentation=(
|
||||
DocumentationTopic(
|
||||
id="files.search.managed-content",
|
||||
title="Search managed files and folders",
|
||||
summary="Expose file names, logical paths, and descriptions to permission-aware platform Search.",
|
||||
body=(
|
||||
"When Search is installed, Files contributes managed files and folders to its derived index. "
|
||||
"Every result is tenant-bounded and rechecks current ownership, group membership, direct shares, "
|
||||
"expiry, revocation, deletion, and Files permissions before it is returned. Committed file and "
|
||||
"share changes are delivered through the platform event outbox; an administrator can rebuild the "
|
||||
"derived index without changing authoritative Files data."
|
||||
),
|
||||
layer="configured",
|
||||
documentation_types=("admin", "user"),
|
||||
audience=("file_user", "file_manager", "administrator"),
|
||||
related_modules=("search",),
|
||||
order=41,
|
||||
),
|
||||
DocumentationTopic(
|
||||
id="files.workflow.organize-managed-files",
|
||||
title="Organize managed files and folders",
|
||||
|
||||
Reference in New Issue
Block a user