Local file storage (#5763)
Co-authored-by: Tom Moor <tom.moor@gmail.com>
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import isArrayLike from "lodash/isArrayLike";
|
||||
import sanitize from "sanitize-filename";
|
||||
import { Primitive } from "utility-types";
|
||||
import validator from "validator";
|
||||
import isIn from "validator/lib/isIn";
|
||||
import isUUID from "validator/lib/isUUID";
|
||||
import parseMentionUrl from "@shared/utils/parseMentionUrl";
|
||||
import { SLUG_URL_REGEX } from "@shared/utils/urlHelpers";
|
||||
@@ -170,6 +172,30 @@ export const assertCollectionPermission = (
|
||||
assertIn(value, [...Object.values(CollectionPermission), null], message);
|
||||
};
|
||||
|
||||
export class ValidateKey {
|
||||
public static isValid = (key: string) => {
|
||||
const parts = key.split("/").slice(0, -1);
|
||||
return (
|
||||
parts.length === 3 &&
|
||||
isIn(parts[0], ["uploads", "public"]) &&
|
||||
isUUID(parts[1]) &&
|
||||
isUUID(parts[2])
|
||||
);
|
||||
};
|
||||
|
||||
public static sanitize = (key: string) => {
|
||||
const [filename] = key.split("/").slice(-1);
|
||||
return key
|
||||
.split("/")
|
||||
.slice(0, -1)
|
||||
.join("/")
|
||||
.concat(`/${sanitize(filename)}`);
|
||||
};
|
||||
|
||||
public static message =
|
||||
"Must be of the form uploads/<uuid>/<uuid>/<name> or public/<uuid>/<uuid>/<name>";
|
||||
}
|
||||
|
||||
export class ValidateDocumentId {
|
||||
/**
|
||||
* Checks if documentId is valid. A valid documentId is either
|
||||
|
||||
Reference in New Issue
Block a user