@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
22 lines (21 loc) • 729 B
JavaScript
import { ForbiddenError } from '@directus/errors';
import { isValidUuid } from './is-valid-uuid.js';
/**
* Validate keys based on its type
*/
export function validateKeys(schema, collection, keyField, keys) {
if (Array.isArray(keys)) {
for (const key of keys) {
validateKeys(schema, collection, keyField, key);
}
}
else {
const primaryKeyFieldType = schema.collections[collection]?.fields[keyField]?.type;
if (primaryKeyFieldType === 'uuid' && !isValidUuid(String(keys))) {
throw new ForbiddenError();
}
else if (primaryKeyFieldType === 'integer' && !Number.isInteger(Number(keys))) {
throw new ForbiddenError();
}
}
}