Fix: Use storage.url() for tenant-aware image URLs in frontend

Updated ImageService to use default_storage.url() instead of manually
constructing URLs. This ensures images displayed on the frontend correctly
include the tenant_id in the path, enabling proper file access within
multi-tenant environment.

Changes:
- ImageService.get_url() now delegates to default_storage.url()
- All image URLs now include /media/tenants/{tenant_id}/ path
- Ensures consistent behavior with TenantAwareFileSystemStorage
- Frontend photos now display correctly with tenant isolation

Result:
- Thumbnail URLs: /media/tenants/papa/products/4/28/thumb.webp
- Medium URLs: /media/tenants/papa/products/4/28/medium.webp
- Large URLs: /media/tenants/papa/products/4/28/large.webp
- Original URLs: /media/tenants/papa/products/4/28/original.jpg

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-23 20:55:02 +03:00
parent 87cba63c47
commit 30f21989d6
2 changed files with 7 additions and 2 deletions

View File

@@ -41,6 +41,8 @@ Tenant ID добавляется/удаляется автоматически
- `_get_tenant_path()` - Добавляет tenant_id в начало пути
- `get_available_name()` - Проверяет уникальность на диске, но возвращает путь БЕЗ tenant_id для БД
- `_save()` - Сохраняет файл с tenant_id на диск, но возвращает путь БЕЗ tenant_id для БД
- `_open()` - Открывает файл, добавляя tenant_id если необходимо (критично для Celery!)
- `path()` - Преобразует относительные пути в полные системные пути с tenant_id
- `delete()` - Удаляет файлы с проверкой принадлежности тенанту (безопасность)
- `exists()` - Проверяет существование с валидацией тенанта
- `url()` - Генерирует URL с проверкой безопасности