2022-03-22 18:19:46 +01:00
|
|
|
'use strict';
|
|
|
|
|
2022-05-05 18:44:50 +02:00
|
|
|
const { defaultsDeep } = require('lodash/fp');
|
2022-03-22 18:19:46 +01:00
|
|
|
const { getService } = require('../utils');
|
2022-05-13 16:10:18 +02:00
|
|
|
const { FOLDER_MODEL_UID } = require('../constants');
|
2022-04-29 09:51:55 +02:00
|
|
|
const { validateCreateFolder, validateUpdateFolder } = require('./validation/admin/folder');
|
2022-03-22 18:19:46 +01:00
|
|
|
|
|
|
|
module.exports = {
|
2022-05-05 18:44:50 +02:00
|
|
|
async findOne(ctx) {
|
|
|
|
const {
|
|
|
|
params: { id },
|
|
|
|
} = ctx.request;
|
|
|
|
|
|
|
|
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
|
|
ability: ctx.state.userAbility,
|
|
|
|
model: FOLDER_MODEL_UID,
|
|
|
|
});
|
|
|
|
|
2022-05-19 14:47:23 +02:00
|
|
|
const { results } = await strapi.entityService.findWithRelationCountsPage(FOLDER_MODEL_UID, {
|
2022-05-05 18:44:50 +02:00
|
|
|
filters: { id },
|
|
|
|
populate: {
|
|
|
|
children: {
|
|
|
|
count: true,
|
|
|
|
},
|
|
|
|
files: {
|
|
|
|
count: true,
|
|
|
|
},
|
2022-05-19 14:47:23 +02:00
|
|
|
},
|
2022-05-05 18:44:50 +02:00
|
|
|
});
|
|
|
|
|
|
|
|
if (results.length === 0) {
|
|
|
|
return ctx.notFound('folder not found');
|
|
|
|
}
|
|
|
|
|
|
|
|
ctx.body = {
|
|
|
|
data: await permissionsManager.sanitizeOutput(results[0]),
|
|
|
|
};
|
|
|
|
},
|
|
|
|
|
2022-03-22 18:19:46 +01:00
|
|
|
async find(ctx) {
|
|
|
|
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
|
|
ability: ctx.state.userAbility,
|
2022-05-13 16:10:18 +02:00
|
|
|
model: FOLDER_MODEL_UID,
|
2022-03-22 18:19:46 +01:00
|
|
|
});
|
|
|
|
|
2022-05-19 14:47:23 +02:00
|
|
|
const results = await strapi.entityService.findWithRelationCounts(FOLDER_MODEL_UID, {
|
2022-05-05 18:44:50 +02:00
|
|
|
...defaultsDeep(
|
|
|
|
{
|
|
|
|
populate: {
|
|
|
|
children: {
|
|
|
|
count: true,
|
|
|
|
},
|
|
|
|
files: {
|
|
|
|
count: true,
|
|
|
|
},
|
2022-05-13 16:10:18 +02:00
|
|
|
},
|
2022-03-22 18:19:46 +01:00
|
|
|
},
|
2022-05-05 18:44:50 +02:00
|
|
|
ctx.query
|
|
|
|
),
|
|
|
|
});
|
2022-03-22 18:19:46 +01:00
|
|
|
|
|
|
|
ctx.body = {
|
2022-05-19 14:47:23 +02:00
|
|
|
data: await permissionsManager.sanitizeOutput(results),
|
2022-03-22 18:19:46 +01:00
|
|
|
};
|
|
|
|
},
|
|
|
|
async create(ctx) {
|
|
|
|
const { user } = ctx.state;
|
2022-05-03 20:33:09 +02:00
|
|
|
const { body } = ctx.request;
|
2022-03-22 18:19:46 +01:00
|
|
|
|
|
|
|
await validateCreateFolder(body);
|
|
|
|
|
2022-05-03 20:33:09 +02:00
|
|
|
const folderService = getService('folder');
|
2022-03-22 18:19:46 +01:00
|
|
|
|
2022-05-03 20:33:09 +02:00
|
|
|
const folder = await folderService.create(body, { user });
|
2022-03-22 18:19:46 +01:00
|
|
|
|
|
|
|
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
|
|
ability: ctx.state.userAbility,
|
2022-05-13 16:10:18 +02:00
|
|
|
model: FOLDER_MODEL_UID,
|
2022-03-22 18:19:46 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
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,
|
2022-05-13 16:10:18 +02:00
|
|
|
model: FOLDER_MODEL_UID,
|
2022-04-29 09:51:55 +02:00
|
|
|
});
|
|
|
|
|
2022-05-02 16:31:27 +02:00
|
|
|
await validateUpdateFolder(id)(body);
|
2022-04-29 09:51:55 +02:00
|
|
|
|
2022-05-03 20:33:09 +02:00
|
|
|
const folderService = getService('folder');
|
2022-04-29 09:51:55 +02:00
|
|
|
|
2022-05-03 20:33:09 +02:00
|
|
|
const updatedFolder = await folderService.update(id, body, { user });
|
2022-04-29 09:51:55 +02:00
|
|
|
|
2022-05-05 18:44:50 +02:00
|
|
|
if (!updatedFolder) {
|
|
|
|
return ctx.notFound('folder not found');
|
|
|
|
}
|
|
|
|
|
2022-04-29 09:51:55 +02:00
|
|
|
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
|
|
|
};
|