feat: harden content asset access

This commit is contained in:
Codex
2026-06-29 18:25:47 +08:00
parent ee578af1f6
commit 79d0d786a0
13 changed files with 762 additions and 67 deletions

View File

@@ -1354,22 +1354,30 @@ async function main() {
`
insert into public.content_assets (
id, tenant_id, asset_key, title, asset_type, storage_provider,
bucket, object_key, file_name, mime_type, visibility, status, source
bucket, object_key, file_name, mime_type, file_size_bytes,
checksum_sha256, visibility, status, upload_status, verified_at,
verified_size_bytes, verified_checksum_sha256, source
)
values (
$1, $2, 'smoke-video-asset', '烟测视频对象', 'video', 'local_dev',
'tenant-assets', $3, 'smoke.mp4', 'video/mp4',
'svip', 'active', 'smoke-seed'
'tenant-assets', $3, 'smoke.mp4', 'video/mp4', 8192,
$4, 'svip', 'active', 'verified', now(), 8192, $4, 'smoke-seed'
)
on conflict (id)
do update set storage_provider = excluded.storage_provider,
bucket = excluded.bucket,
object_key = excluded.object_key,
file_size_bytes = excluded.file_size_bytes,
checksum_sha256 = excluded.checksum_sha256,
visibility = excluded.visibility,
status = 'active',
upload_status = 'verified',
verified_at = coalesce(public.content_assets.verified_at, now()),
verified_size_bytes = excluded.verified_size_bytes,
verified_checksum_sha256 = excluded.verified_checksum_sha256,
updated_at = now()
`,
[ids.videoAsset, tenantId, `${tenantId}/videos/smoke.mp4`],
[ids.videoAsset, tenantId, `${tenantId}/videos/smoke.mp4`, 'c'.repeat(64)],
);
await client.query(