diff --git a/client/build/containers/PublishDisabledMessage/view.js b/client/build/containers/PublishDisabledMessage/view.js index 24487939..7ef8f198 100644 --- a/client/build/containers/PublishDisabledMessage/view.js +++ b/client/build/containers/PublishDisabledMessage/view.js @@ -40,11 +40,15 @@ function (_React$Component) { key: "render", value: function render() { var message = this.props.message; - return _react.default.createElement("div", null, _react.default.createElement("p", { + return _react.default.createElement("div", { + className: 'publish-disabled-message' + }, _react.default.createElement("div", { + className: 'message' + }, _react.default.createElement("p", { className: 'text--secondary' }, "Publishing is currently disabled."), _react.default.createElement("p", { className: 'text--secondary' - }, message)); + }, message))); } }]); diff --git a/client/scss/all.scss b/client/scss/all.scss index 6675e5c5..e2da3336 100644 --- a/client/scss/all.scss +++ b/client/scss/all.scss @@ -40,6 +40,7 @@ @import 'containers/_dropzone'; @import 'containers/_publish-url-input'; @import 'containers/_publish-status'; +@import 'containers/_publish-disabled-message'; @import '_media-queries'; diff --git a/client/scss/containers/_publish-disabled-message.scss b/client/scss/containers/_publish-disabled-message.scss new file mode 100644 index 00000000..66bdba7c --- /dev/null +++ b/client/scss/containers/_publish-disabled-message.scss @@ -0,0 +1,11 @@ +.publish-disabled-message { + // fill the parent flex container + flex: 1 0 auto; + // be a flex container for children + display: flex; + flex-direction: column; + justify-content: center; + .message { + text-align: center; + } +} diff --git a/client/src/containers/PublishDisabledMessage/view.jsx b/client/src/containers/PublishDisabledMessage/view.jsx index b48271de..355ce75d 100644 --- a/client/src/containers/PublishDisabledMessage/view.jsx +++ b/client/src/containers/PublishDisabledMessage/view.jsx @@ -4,9 +4,11 @@ class PublishDisabledMessage extends React.Component { render () { const message = this.props.message; return ( -
-

Publishing is currently disabled.

-

{message}

+
+
+

Publishing is currently disabled.

+

{message}

+
); } diff --git a/server/controllers/api/claim/publish/index.js b/server/controllers/api/claim/publish/index.js index 15e48ee9..7d42106a 100644 --- a/server/controllers/api/claim/publish/index.js +++ b/server/controllers/api/claim/publish/index.js @@ -1,4 +1,6 @@ -const { details: { host } } = require('@config/siteConfig'); +const logger = require('winston'); + +const { details: { host }, publishing: { disabled, disabledMessage } } = require('@config/siteConfig'); const { sendGATimingEvent } = require('../../../../utils/googleAnalytics.js'); @@ -20,6 +22,19 @@ const authenticateUser = require('./authentication.js'); */ const claimPublish = ({ body, files, headers, ip, originalUrl, user }, res) => { + // logging + logger.info('PUBLISH REQUEST:', { + ip, + headers, + body, + }); + // check for disabled publishing + if (disabled) { + return res.status(503).json({ + success: false, + message: disabledMessage + }); + } // define variables let channelName, channelId, channelPassword, description, fileName, filePath, fileType, gaStartTime, license, name, nsfw, thumbnail, thumbnailFileName, thumbnailFilePath, thumbnailFileType, title; // record the start time of the request diff --git a/server/controllers/api/config/site/publishing/index.js b/server/controllers/api/config/site/publishing/index.js new file mode 100644 index 00000000..08e60bf3 --- /dev/null +++ b/server/controllers/api/config/site/publishing/index.js @@ -0,0 +1,29 @@ +const { publishing: { + primaryClaimAddress, + uploadDirectory, + thumbnailChannel, + thumbnailChannelId, + additionalClaimAddresses, + disabled, + disabledMessage +} } = require('@config/siteConfig'); + +/* + + route to see if publishing is enabled + +*/ + +const publishingConfig = (req, res) => { + return res.status(200).json({ + primaryClaimAddress, + uploadDirectory, + thumbnailChannel, + thumbnailChannelId, + additionalClaimAddresses, + disabled, + disabledMessage + }); +}; + +module.exports = publishingConfig; diff --git a/server/routes/api/index.js b/server/routes/api/index.js index 0aabd472..05c4973c 100644 --- a/server/routes/api/index.js +++ b/server/routes/api/index.js @@ -13,6 +13,7 @@ const claimResolve = require('../../controllers/api/claim/resolve'); const claimShortId = require('../../controllers/api/claim/shortId'); const fileAvailability = require('../../controllers/api/file/availability'); const userPassword = require('../../controllers/api/user/password'); +const publishingConfig = require('../../controllers/api/config/site/publishing'); const multipartMiddleware = require('../utils/multipartMiddleware'); @@ -36,4 +37,6 @@ module.exports = (app) => { app.get('/api/file/availability/:name/:claimId', fileAvailability); // user routes app.put('/api/user/password/', userPassword); + // configs + app.get('/api/config/site/publishing', publishingConfig); };