mirror of
https://github.com/directus/directus.git
synced 2026-02-16 10:15:14 -05:00
44
src/constants.ts
Normal file
44
src/constants.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
export const SYSTEM_ASSET_WHITELIST = [
|
||||
{
|
||||
key: 'directus-small-crop',
|
||||
width: 64,
|
||||
height: 64,
|
||||
fit: 'crop',
|
||||
quality: 80,
|
||||
},
|
||||
{
|
||||
key: 'directus-small-contain',
|
||||
width: 64,
|
||||
height: 64,
|
||||
fit: 'contain',
|
||||
quality: 80,
|
||||
},
|
||||
{
|
||||
key: 'directus-medium-crop',
|
||||
width: 300,
|
||||
height: 300,
|
||||
fit: 'crop',
|
||||
quality: 80,
|
||||
},
|
||||
{
|
||||
key: 'directus-medium-contain',
|
||||
width: 300,
|
||||
height: 300,
|
||||
fit: 'contain',
|
||||
quality: 80,
|
||||
},
|
||||
{
|
||||
key: 'directus-large-crop',
|
||||
width: 800,
|
||||
height: 600,
|
||||
fit: 'crop',
|
||||
quality: 80,
|
||||
},
|
||||
{
|
||||
key: 'directus-large-contain',
|
||||
width: 800,
|
||||
height: 600,
|
||||
fit: 'contain',
|
||||
quality: 80,
|
||||
},
|
||||
];
|
||||
@@ -9,6 +9,7 @@ import { parse as parseICC } from 'icc';
|
||||
import parseEXIF from 'exif-reader';
|
||||
import parseIPTC from '../utils/parse-iptc';
|
||||
import path from 'path';
|
||||
import { SYSTEM_ASSET_WHITELIST } from '../constants';
|
||||
|
||||
export const createFile = async (
|
||||
data: Record<string, any>,
|
||||
@@ -54,7 +55,29 @@ export const readFiles = async (query: Query) => {
|
||||
};
|
||||
|
||||
export const readFile = async (pk: string | number, query: Query) => {
|
||||
return await ItemsService.readItem('directus_files', pk, query);
|
||||
const file = await ItemsService.readItem('directus_files', pk, query);
|
||||
|
||||
const { asset_allowlist: assetAllowlist } =
|
||||
(await database.select('asset_allowlist').from('directus_settings').first()) || {};
|
||||
|
||||
const assetSizes = [...SYSTEM_ASSET_WHITELIST, ...(assetAllowlist || [])];
|
||||
|
||||
file.links = {
|
||||
asset_url: new URL(`/assets/${file.id}`, process.env.PUBLIC_URL),
|
||||
/** @TODO confirm is public url is set before returning */
|
||||
original_url: new URL(
|
||||
file.filename_disk,
|
||||
process.env[`STORAGE_${file.storage.toUpperCase()}_PUBLIC_URL`]
|
||||
),
|
||||
thumbnails: assetSizes.map((size) => {
|
||||
return {
|
||||
...size,
|
||||
url: new URL(`/assets/${file.id}?key=${size.key}`, process.env.PUBLIC_URL),
|
||||
};
|
||||
}),
|
||||
};
|
||||
|
||||
return file;
|
||||
};
|
||||
|
||||
// @todo Add query support
|
||||
|
||||
Reference in New Issue
Block a user