UNPKG

@nocobase/plugin-file-manager

Version:

Provides files storage services with files collection template and attachment field.

74 lines (72 loc) 2.57 kB
/** * This file is part of the NocoBase (R) project. * Copyright (c) 2020-2024 NocoBase Co., Ltd. * Authors: NocoBase Team. * * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. * For more information, please refer to: https://www.nocobase.com/agreement. */ var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var storage_validation_exports = {}; __export(storage_validation_exports, { validateStorageMiddleware: () => validateStorageMiddleware }); module.exports = __toCommonJS(storage_validation_exports); var import_local = require("../storages/local"); async function validateStorageMiddleware(ctx, next) { const { actionName, params } = ctx.action; const values = params.values || {}; let storage = values; const hasSubmittedDocumentRoot = Object.prototype.hasOwnProperty.call(values.options || {}, "documentRoot"); if (actionName === "update" && params.filterByTk) { const repository = ctx.db.getRepository("storages"); let existing = await repository.findById(params.filterByTk); if (!existing) { existing = await repository.findOne({ filter: { name: params.filterByTk } }); } if (existing) { const existingValues = existing.toJSON(); storage = { ...existingValues, ...values, options: { ...existingValues.options || {}, ...values.options || {} } }; } } try { (0, import_local.validateLocalStorageConfig)(storage, { validateDocumentRoot: hasSubmittedDocumentRoot }); } catch (error) { if (error.code === "PATH_TRAVERSAL") { return ctx.throw(400, error.message); } throw error; } await next(); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { validateStorageMiddleware });