From 4c80b3f798a80d8ff3d8b20061a1f26b574d96e7 Mon Sep 17 00:00:00 2001 From: vincentbpro <89356961+vincentbpro@users.noreply.github.com> Date: Wed, 20 Apr 2022 15:52:58 +0200 Subject: [PATCH] feat(menu-logo): added GET /project-settings route --- packages/core/admin/server/controllers/admin.js | 4 ++++ packages/core/admin/server/routes/admin.js | 14 ++++++++++++++ .../core/admin/server/services/project-settings.js | 8 +++++++- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/core/admin/server/controllers/admin.js b/packages/core/admin/server/controllers/admin.js index 76caf3a81e..f96471f11f 100644 --- a/packages/core/admin/server/controllers/admin.js +++ b/packages/core/admin/server/controllers/admin.js @@ -48,6 +48,10 @@ module.exports = { return { data: { uuid, hasAdmin } }; }, + async getProjectSettings() { + return getService('project-settings').getProjectSettings(); + }, + async updateProjectSettings(ctx) { const projectSettingsService = getService('project-settings'); diff --git a/packages/core/admin/server/routes/admin.js b/packages/core/admin/server/routes/admin.js index 598cec90a0..e1a3188dcc 100644 --- a/packages/core/admin/server/routes/admin.js +++ b/packages/core/admin/server/routes/admin.js @@ -7,6 +7,20 @@ module.exports = [ handler: 'admin.init', config: { auth: false }, }, + { + method: 'GET', + path: '/project-settings', + handler: 'admin.getProjectSettings', + config: { + policies: [ + 'admin::isAuthenticatedAdmin', + { + name: 'admin::hasPermissions', + config: { actions: ['admin::project-settings.update'] }, + }, + ], + }, + }, { method: 'POST', path: '/project-settings', diff --git a/packages/core/admin/server/services/project-settings.js b/packages/core/admin/server/services/project-settings.js index f77c50a0e3..b861b88563 100644 --- a/packages/core/admin/server/services/project-settings.js +++ b/packages/core/admin/server/services/project-settings.js @@ -4,6 +4,9 @@ const fs = require('fs'); const { pick } = require('lodash'); const PROJECT_SETTINGS_FILE_INPUTS = ['menuLogo']; +const DEFAULT_PROJECT_SETTINGS = { + menuLogo: null, +}; const parseFilesData = async files => { const formatedFilesData = {}; @@ -52,7 +55,10 @@ const parseFilesData = async files => { const getProjectSettings = async () => { const store = strapi.store({ type: 'core', name: 'admin' }); - const projectSettings = await store.get({ key: 'project-settings' }); + const projectSettings = { + ...DEFAULT_PROJECT_SETTINGS, + ...(await store.get({ key: 'project-settings' })), + }; // Filter file input fields PROJECT_SETTINGS_FILE_INPUTS.forEach(inputName => {