diff --git a/demo/payload.config.js b/demo/payload.config.js index 0db7c9c9f4..4e81e04cd6 100644 --- a/demo/payload.config.js +++ b/demo/payload.config.js @@ -43,6 +43,7 @@ module.exports = { }, }, email: { + transport: 'mock', fromName: 'Payload', fromAddress: 'hello@payloadcms.com', }, diff --git a/demo/server.js b/demo/server.js index 13ff99eda4..9781723d56 100644 --- a/demo/server.js +++ b/demo/server.js @@ -9,9 +9,6 @@ const expressApp = express(); expressApp.use('/static', express.static(path.resolve(__dirname, 'client/static'))); payload.init({ - email: { - transport: 'mock', - }, secret: 'SECRET_KEY', mongoURL: 'mongodb://localhost/payload', express: expressApp, @@ -39,11 +36,6 @@ exports.start = (cb) => { const server = expressApp.listen(3000, async () => { logger.info(`listening on ${3000}...`); - const creds = await payload.getMockEmailCredentials(); - logger.info(`Mock email account username: ${creds.user}`); - logger.info(`Mock email account password: ${creds.pass}`); - logger.info(`Log in to mock email provider at ${creds.web}`); - if (cb) cb(); }); diff --git a/src/email/build.js b/src/email/build.js index f4995a4dd8..070f5b54f6 100644 --- a/src/email/build.js +++ b/src/email/build.js @@ -5,8 +5,13 @@ const mockHandler = require('./mockHandler'); async function buildEmail() { if (!this.config.email.transport || this.config.email.transport === 'mock') { logger.info('E-mail configured with mock configuration'); - // TODO: Log mock e-mail credentials here as well? const mockAccount = await mockHandler(this.config.email); + if (this.config.email.transport === 'mock') { + const { account: { web, user, pass } } = mockAccount; + logger.info(`Log into mock email provider at ${web}`); + logger.info(`Mock email account username: ${user}`); + logger.info(`Mock email account password: ${pass}`); + } return mockAccount; } diff --git a/src/errors/InvalidConfiguration.js b/src/errors/InvalidConfiguration.js new file mode 100644 index 0000000000..9943aa9543 --- /dev/null +++ b/src/errors/InvalidConfiguration.js @@ -0,0 +1,10 @@ +const httpStatus = require('http-status'); +const APIError = require('./APIError'); + +class InvalidConfiguration extends APIError { + constructor(message, results) { + super(message, httpStatus.INTERNAL_SERVER_ERROR, results); + } +} + +module.exports = InvalidConfiguration; diff --git a/src/errors/index.js b/src/errors/index.js index 0f3239ab6c..6f2f2443a0 100644 --- a/src/errors/index.js +++ b/src/errors/index.js @@ -7,6 +7,7 @@ const errorHandler = require('../express/middleware/errorHandler'); const FileUploadError = require('./FileUploadError'); const Forbidden = require('./Forbidden'); const LockedAuth = require('./LockedAuth'); +const InvalidConfiguration = require('./InvalidConfiguration'); const InvalidFieldRelationship = require('./InvalidFieldRelationship'); const MissingCollectionLabel = require('./MissingCollectionLabel'); const MissingFieldInputOptions = require('./MissingFieldInputOptions'); @@ -26,6 +27,7 @@ module.exports = { FileUploadError, Forbidden, LockedAuth, + InvalidConfiguration, InvalidFieldRelationship, MissingCollectionLabel, MissingFieldInputOptions, diff --git a/src/utilities/sanitizeConfig.js b/src/utilities/sanitizeConfig.js index 314a284520..b6178e9a10 100644 --- a/src/utilities/sanitizeConfig.js +++ b/src/utilities/sanitizeConfig.js @@ -35,6 +35,11 @@ const sanitizeConfig = (config) => { if (!sanitizedConfig.admin.user) { sanitizedConfig.admin.user = 'users'; sanitizedConfig.collections.push(defaultUser); + } else if (!sanitizedConfig.collections + .filter((c) => c.auth !== undefined) + .map((c) => c.slug) + .includes(sanitizedConfig.admin.user)) { + throw new InvalidConfiguration(`${sanitizedConfig.admin.user} is not a valid admin user collection`); } sanitizedConfig.email = config.email || {};