2022-03-22 18:19:46 +01:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const { setCreatorFields, pipeAsync } = require('@strapi/utils');
|
|
|
|
const { getService } = require('../utils');
|
2022-04-29 09:51:55 +02:00
|
|
|
const { validateCreateFolder, validateUpdateFolder } = require('./validation/admin/folder');
|
2022-03-22 18:19:46 +01:00
|
|
|
|
|
|
|
const folderModel = 'plugin::upload.folder';
|
|
|
|
|
|
|
|
module.exports = {
|
|
|
|
async find(ctx) {
|
|
|
|
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
|
|
ability: ctx.state.userAbility,
|
|
|
|
model: folderModel,
|
|
|
|
});
|
|
|
|
|
|
|
|
const { results, pagination } = await strapi.entityService.findWithRelationCounts(folderModel, {
|
|
|
|
...ctx.query,
|
|
|
|
populate: {
|
|
|
|
children: {
|
|
|
|
count: true,
|
|
|
|
},
|
|
|
|
files: {
|
|
|
|
count: true,
|
|
|
|
},
|
|
|
|
parent: true,
|
|
|
|
createdBy: true,
|
|
|
|
updatedBy: true,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
results: await permissionsManager.sanitizeOutput(results),
|
|
|
|
pagination,
|
|
|
|
};
|
|
|
|
},
|
|
|
|
async create(ctx) {
|
|
|
|
const { user } = ctx.state;
|
|
|
|
const { body, query } = ctx.request;
|
|
|
|
|
|
|
|
await validateCreateFolder(body);
|
|
|
|
|
2022-04-12 16:32:05 +02:00
|
|
|
const { setPathAndUID } = getService('folder');
|
2022-03-22 18:19:46 +01:00
|
|
|
|
|
|
|
// TODO: wrap with a transaction
|
2022-04-12 16:32:05 +02:00
|
|
|
const enrichFolder = pipeAsync(setPathAndUID, setCreatorFields({ user }));
|
2022-03-22 18:19:46 +01:00
|
|
|
const enrichedFolder = await enrichFolder(body);
|
|
|
|
|
|
|
|
const folder = await strapi.entityService.create(folderModel, {
|
|
|
|
...query,
|
|
|
|
data: enrichedFolder,
|
|
|
|
});
|
|
|
|
|
|
|
|
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
|
|
ability: ctx.state.userAbility,
|
|
|
|
model: folderModel,
|
|
|
|
});
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
data: await permissionsManager.sanitizeOutput(folder),
|
|
|
|
};
|
|
|
|
},
|
2022-04-07 18:00:21 +02:00
|
|
|
|
2022-04-29 09:51:55 +02:00
|
|
|
async update(ctx) {
|
|
|
|
const { user } = ctx.state;
|
|
|
|
const {
|
|
|
|
body,
|
|
|
|
params: { id },
|
|
|
|
} = ctx.request;
|
|
|
|
|
|
|
|
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
|
|
ability: ctx.state.userAbility,
|
|
|
|
model: folderModel,
|
|
|
|
});
|
|
|
|
|
|
|
|
await validateUpdateFolder(body);
|
|
|
|
|
|
|
|
const { update } = getService('folder');
|
|
|
|
|
|
|
|
const updatedFolder = await update(id, body, { user });
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
data: await permissionsManager.sanitizeOutput(updatedFolder),
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
2022-04-13 12:52:44 +02:00
|
|
|
async getStructure(ctx) {
|
|
|
|
const { getStructure } = getService('folder');
|
2022-04-07 18:00:21 +02:00
|
|
|
|
2022-04-13 12:52:44 +02:00
|
|
|
const structure = await getStructure();
|
2022-04-07 18:00:21 +02:00
|
|
|
|
|
|
|
ctx.body = {
|
2022-04-13 12:52:44 +02:00
|
|
|
data: structure,
|
2022-04-07 18:00:21 +02:00
|
|
|
};
|
|
|
|
},
|
2022-03-22 18:19:46 +01:00
|
|
|
};
|