Jean-Sébastien Herbaux e55ea1d6b5
Hide creator fields from public api by default (#8052)
* Add model option to hide/show creators fields in public API response

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Add content-types util, rework sanitize-entity's private handling

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Update search e2e tests, fix an issue on empty search for the core-api controller (find)

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Fix GraphQL plugin (handle privates attributes on typeDefs + resolver builds)

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Fix sanitizeEntity import

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Move doc update from beta to stable

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Fix e2e test

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Fix pr comments

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Remove creator's field from upload controller routes

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Fix typedef build for graphql association

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Fix pr (comments + several issues)

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Add tests for search behavior in content-manager

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Rename files variables to meaningful names (upload controllers)

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

* Fix test with search id matching serialNumber

Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>

* Add toHasBeenCalledWith check for config.get (utils/content-types.test.js)

Signed-off-by: Convly <jean-sebastien.herbaux@epitech.eu>

Co-authored-by: Alexandre Bodin <bodin.alex@gmail.com>
2020-10-01 17:47:08 +02:00

126 lines
2.8 KiB
JavaScript

'use strict';
const _ = require('lodash');
const { sanitizeEntity } = require('strapi-utils');
const validateSettings = require('../validation/settings');
const validateUploadBody = require('../validation/upload');
const sanitize = (data, options = {}) => {
return sanitizeEntity(data, {
model: strapi.getModel('file', 'upload'),
...options,
});
};
module.exports = {
async find(ctx) {
const method = _.has(ctx.query, '_q') ? 'search' : 'fetchAll';
const files = await strapi.plugins.upload.services.upload[method](ctx.query);
ctx.body = sanitize(files);
},
async findOne(ctx) {
const {
params: { id },
} = ctx;
const file = await strapi.plugins.upload.services.upload.fetch({ id });
if (!file) {
return ctx.notFound('file.notFound');
}
ctx.body = sanitize(file);
},
async count(ctx) {
const method = _.has(ctx.query, '_q') ? 'countSearch' : 'count';
ctx.body = await strapi.plugins.upload.services.upload[method](ctx.query);
},
async destroy(ctx) {
const {
params: { id },
} = ctx;
const file = await strapi.plugins['upload'].services.upload.fetch({ id });
if (!file) {
return ctx.notFound('file.notFound');
}
await strapi.plugins['upload'].services.upload.remove(file);
ctx.body = sanitize(file);
},
async updateSettings(ctx) {
const {
request: { body },
} = ctx;
const data = await validateSettings(body);
await strapi.plugins.upload.services.upload.setSettings(data);
ctx.body = { data };
},
async getSettings(ctx) {
const data = await strapi.plugins.upload.services.upload.getSettings();
ctx.body = { data };
},
async updateFileInfo(ctx) {
const {
query: { id },
request: { body },
} = ctx;
const data = await validateUploadBody(body);
const result = await strapi.plugins.upload.services.upload.updateFileInfo(id, data.fileInfo);
ctx.body = sanitize(result);
},
async replaceFile(ctx) {
const {
query: { id },
request: { body, files: { files } = {} },
} = ctx;
// cannot replace with more than one file
if (Array.isArray(files)) {
throw strapi.errors.badRequest(null, {
errors: [
{ id: 'Upload.replace.single', message: 'Cannot replace a file with multiple ones' },
],
});
}
const replacedFiles = await strapi.plugins.upload.services.upload.replace(id, {
data: await validateUploadBody(body),
file: files,
});
ctx.body = sanitize(replacedFiles);
},
async uploadFiles(ctx) {
const {
request: { body, files: { files } = {} },
} = ctx;
const uploadedFiles = await strapi.plugins.upload.services.upload.upload({
data: await validateUploadBody(body),
files,
});
ctx.body = sanitize(uploadedFiles);
},
};