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);
};