mirror of
https://github.com/langgenius/dify.git
synced 2026-09-07 18:36:02 +08:00
Legacy knowledge bases (`datasets`) and KnowledgeFS spaces (`knowledge_fs_control_spaces`) live in different tables, so a dataset API key binding could only ever name a legacy dataset and the KnowledgeFS service API never consulted bindings at all: a key scoped to specific knowledge bases still reached every KnowledgeFS space in the workspace. - Bindings carry a `resource_type` (`dataset` | `knowledge_fs_space`) and a nullable `control_space_id` (migration 9a4e7d1c2b60, existing rows stay `dataset`), with a CHECK that exactly one id column matches the type. - `dataset_api_key_service` exposes the key scope by kind, validates and binds KnowledgeFS spaces (tenant-owned, not deleting/deleted), and cleans up keys scoped only to a space when its deletion is requested. The orphan-key cleanup is now NULL-safe so a space binding keeps a key alive. - Legacy dataset routes only honour `dataset` bindings; the KnowledgeFS authorization service only honours `knowledge_fs_space` bindings and raises a scope error that the service API maps to 403 (unknown keys stay 401). - Console key creation accepts `knowledge_space_ids`; list/create responses return them next to `dataset_ids`. - The web scope picker lists KnowledgeFS spaces alongside legacy datasets when KnowledgeFS is enabled and submits the ids by kind; the scope column counts both. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015zw5G5SX3HmVfnZof6YWAc
37 lines
2.6 KiB
JSON
37 lines
2.6 KiB
JSON
{
|
|
"actionMsg.deleteConfirmTips": "این عمل قابل بازگشت نیست.",
|
|
"actionMsg.deleteConfirmTitle": "این کلید مخفی حذف شود؟",
|
|
"actionMsg.ok": "تایید",
|
|
"apiKeyModal.addKnowledgeBase": "افزودن پایگاه دانش",
|
|
"apiKeyModal.addSubtitle": "برای دسترسی به API پایگاه دانش، یک کلید API جدید ایجاد کنید.",
|
|
"apiKeyModal.addTitle": "افزودن کلید API",
|
|
"apiKeyModal.apiSecretKey": "کلید API",
|
|
"apiKeyModal.apiSecretKeyTips": "برای جلوگیری از سوء استفاده از API، از کلید API خود محافظت کنید. از استفاده از آن به صورت متن ساده در کد فرانتاند خودداری کنید. :)",
|
|
"apiKeyModal.createNewSecretKey": "ایجاد کلید مخفی جدید",
|
|
"apiKeyModal.created": "ایجاد شده",
|
|
"apiKeyModal.generateTips": "این کلید را در مکانی امن و قابل دسترس نگه دارید.",
|
|
"apiKeyModal.knowledgeBaseAccess": "دسترسی به پایگاههای دانش",
|
|
"apiKeyModal.knowledgeSpaceBadge": "KnowledgeFS",
|
|
"apiKeyModal.lastUsed": "آخرین استفاده",
|
|
"apiKeyModal.noKnowledgeBasesSelected": "هنوز هیچ پایگاه دانشی انتخاب نشده است.",
|
|
"apiKeyModal.pickerKnowledgeSpaces": "پایگاههای دانش KnowledgeFS",
|
|
"apiKeyModal.pickerLegacyDatasets": "پایگاههای دانش قدیمی",
|
|
"apiKeyModal.scope": "محدوده",
|
|
"apiKeyModal.scopeAllDatasets": "همه پایگاههای دانش",
|
|
"apiKeyModal.scopeAllDatasetsTip": "این کلید میتواند به تمام پایگاههای دانش موجود در فضای کاری دسترسی داشته باشد.",
|
|
"apiKeyModal.scopeCount": "{{count}} پایگاه دانش",
|
|
"apiKeyModal.scopeSpecificDatasets": "پایگاههای دانش خاص",
|
|
"apiKeyModal.scopeSpecificDatasetsTip": "این کلید فقط میتواند به پایگاههای دانشی که انتخاب میکنید دسترسی داشته باشد.",
|
|
"apiKeyModal.searchKnowledgeBases": "جستجوی پایگاههای دانش",
|
|
"apiKeyModal.secretKey": "کلید مخفی",
|
|
"apiKeyModal.selectedKnowledgeBases": "پایگاههای دانش انتخابشده",
|
|
"apiKeyModal.selectedKnowledgeBasesCount": "پایگاههای دانش انتخابشده ({{count}})",
|
|
"copied": "کپی شد",
|
|
"copy": "کپی",
|
|
"loading": "در حال بارگذاری",
|
|
"never": "هرگز",
|
|
"pause": "مکث",
|
|
"play": "پخش",
|
|
"playing": "در حال پخش"
|
|
}
|