UNPKG

strapi-plugin-i18n

Version:

This plugin enables to create, to read and to update content in different languages, both from the Admin Panel and from the API

49 lines (38 loc) 1.43 kB
'use strict'; const { isEmpty } = require('lodash/fp'); const { getService } = require('../../utils'); /** * Handler for the permissions layout (sections builder) * Adds the locales property to the subjects * @param {Action} action * @param {ContentTypesSection} section * @return {Promise<void>} */ const localesPropertyHandler = async ({ action, section }) => { const { actionProvider } = strapi.admin.services.permission; const locales = await getService('locales').find(); // Do not add the locales property if there is none registered if (isEmpty(locales)) { return; } for (const subject of section.subjects) { const applies = await actionProvider.appliesToProperty('locales', action.actionId, subject.uid); const hasLocalesProperty = subject.properties.find(property => property.value === 'locales'); if (applies && !hasLocalesProperty) { subject.properties.push({ label: 'Locales', value: 'locales', children: locales.map(({ name, code }) => ({ label: name || code, value: code })), }); } } }; const registerLocalesPropertyHandler = () => { const { sectionsBuilder } = strapi.admin.services.permission; sectionsBuilder.addHandler('singleTypes', localesPropertyHandler); sectionsBuilder.addHandler('collectionTypes', localesPropertyHandler); }; module.exports = { localesPropertyHandler, registerLocalesPropertyHandler, };