cleans and sanitizes config for client use

This commit is contained in:
James
2020-03-31 15:46:12 -04:00
parent 0b2f7686ec
commit 0ef4b742d5
11 changed files with 46 additions and 25 deletions

View File

@@ -14,7 +14,7 @@ import MediaLibrary from './views/MediaLibrary';
import Edit from './views/collections/Edit';
import EditGlobal from './views/globals/Edit';
import { requests } from '../api';
import customComponents from './custom-components';
import customComponents from './customComponents';
import RedirectToLogin from './utilities/RedirectToLogin';
const Routes = () => {

View File

@@ -1,21 +1,20 @@
function stringify(obj) {
if (typeof obj === 'object') {
var result = []
Object.keys(obj).forEach(function (key) {
var val = stringify(obj[key])
const result = [];
Object.keys(obj).forEach((key) => {
const val = stringify(obj[key]);
if (val !== null) {
result.push('"' + key + '": ' + val)
result.push(`"${key}": ${val}`);
}
})
return "{" + result.join(",") + "}"
});
return `{${result.join(',')}}`;
}
return `React.lazy(() => import('${obj}'))`;
}
module.exports = function (config) {
let allCollectionComponents = config.collections.reduce((obj, collection) => {
const allCollectionComponents = config.collections.reduce((obj, collection) => {
obj[collection.slug] = {
fields: {},
...(collection.components || {}),
@@ -24,7 +23,7 @@ module.exports = function (config) {
collection.fields.forEach((field) => {
if (field.component) {
obj[collection.slug].fields[field.name] = field.component;
};
}
});
return obj;
@@ -38,6 +37,7 @@ module.exports = function (config) {
return {
code: `
const React = require('react');
module.exports = ${string}
` };
module.exports = ${string};
`,
};
};

View File

@@ -28,7 +28,6 @@ class Relationship extends Component {
this.state = {
relations,
search: '',
lastFullyLoadedRelation: -1,
lastLoadedPage: 1,
options: [],

View File

@@ -4,7 +4,7 @@ import DefaultSidebar from '../Sidebar';
import StepNav, { useStepNav, StepNavProvider } from '../../modules/StepNav';
import { StatusListProvider } from '../../modules/Status';
import Localizer from '../../modules/Localizer';
import customComponents from '../../custom-components';
import customComponents from '../../customComponents';
import './index.scss';

View File

@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import { Link } from 'react-router-dom';
import config from 'payload-config';
import qs from 'qs';
import config from '../../../config/sanitizedClientConfig';
import { useLocale } from '../../utilities/Locale';
import { useSearchParams } from '../../utilities/SearchParams';
import Arrow from '../../graphics/Arrow';

View File

@@ -1,8 +1,8 @@
import React, {
createContext, useContext, useState, useEffect,
} from 'react';
import config from 'payload-config';
import PropTypes from 'prop-types';
import config from '../../../config/sanitizedClientConfig';
import { useSearchParams } from '../SearchParams';
const defaultLocale = (config.localization && config.localization.defaultLocale) ? config.localization.defaultLocale : 'en';

View File

@@ -10,7 +10,7 @@ import APIURL from '../../../modules/APIURL';
import Button from '../../../controls/Button';
import FormSubmit from '../../../forms/Submit';
import RenderFields from '../../../forms/RenderFields';
import customComponents from '../../../custom-components';
import customComponents from '../../../customComponents';
import './index.scss';
@@ -123,6 +123,7 @@ EditView.propTypes = {
}),
slug: PropTypes.string,
useAsTitle: PropTypes.string,
fields: PropTypes.arrayOf(PropTypes.shape({})),
}).isRequired,
isEditing: PropTypes.bool,
};

View File

@@ -25,7 +25,16 @@ module.exports = (config) => {
module: {
rules: [
{
test: require.resolve('../components/custom-components.js'),
test: require.resolve('../components/customComponents'),
use: [
{
loader: 'val-loader',
options: config,
},
],
},
{
test: require.resolve('./sanitizedClientConfig'),
use: [
{
loader: 'val-loader',
@@ -116,7 +125,6 @@ module.exports = (config) => {
modules: ['node_modules', path.resolve(__dirname, '../../../node_modules')],
alias: {
'payload-scss-overrides': config.paths.scssOverrides,
'payload-config': config.paths.config,
},
},
};

View File

@@ -97,8 +97,6 @@ module.exports = (config) => {
modules: ['node_modules', path.resolve(__dirname, '../../../node_modules')],
alias: {
'payload-scss-overrides': config.paths.scssOverrides,
'payload-custom-components': config.paths.components,
'payload-config': config.paths.config,
},
},
};

View File

@@ -1,6 +1,12 @@
import config from 'payload-config';
import sanitizeConfig from '../../utilities/sanitizeConfig';
const sanitizeConfig = require('../../utilities/sanitizeConfig');
const secureConfig = require('../../utilities/secureConfig');
const sanitizedConfig = sanitizeConfig(config);
module.exports = (config) => {
const sanitizedConfig = sanitizeConfig(config);
const securedConfig = secureConfig(sanitizedConfig);
export default sanitizedConfig;
return {
code: `
module.exports = ${JSON.stringify(securedConfig)}`,
};
};

View File

@@ -0,0 +1,9 @@
const secureConfig = (config) => {
const securedConfig = { ...config };
delete securedConfig.user.auth.secretKey;
return securedConfig;
};
module.exports = secureConfig;