diff --git a/src/routes/support.js b/src/routes/support.js index ec30ef868..93ce86003 100644 --- a/src/routes/support.js +++ b/src/routes/support.js @@ -5,9 +5,6 @@ exports = module.exports = { getRemoteSupport, enableRemoteSupport, - - canCreateTicket, - canEnableRemoteSupport }; const appstore = require('../appstore.js'), @@ -19,15 +16,6 @@ const appstore = require('../appstore.js'), safe = require('safetydance'), support = require('../support.js'); -async function canCreateTicket(req, res, next) { - const [error, supportConfig] = await safe(support.getConfig()); - if (error) return next(new HttpError(503, error.message)); - - if (!supportConfig.submitTickets) return next(new HttpError(405, 'feature disabled by admin')); - - next(); -} - async function createTicket(req, res, next) { assert.strictEqual(typeof req.user, 'object'); @@ -41,25 +29,12 @@ async function createTicket(req, res, next) { if (req.body.altEmail && typeof req.body.altEmail !== 'string') return next(new HttpError(400, 'altEmail must be string')); if (req.body.enableSshSupport && typeof req.body.enableSshSupport !== 'boolean') return next(new HttpError(400, 'enableSshSupport must be a boolean')); - const [error, supportConfig] = await safe(support.getConfig()); - if (error) return next(new HttpError(503, `Error getting support config: ${error.message}`)); - if (supportConfig.email !== constants.SUPPORT_EMAIL) return next(new HttpError(503, 'Sending to non-cloudron email not implemented yet')); - const [ticketError, result] = await safe(appstore.createTicket(Object.assign({ }, req.body, { email: req.user.email, displayName: req.user.displayName }), AuditSource.fromRequest(req))); if (ticketError) return next(new HttpError(503, `Error contacting cloudron.io: ${ticketError.message}. Please email ${constants.SUPPORT_EMAIL}`)); next(new HttpSuccess(201, result)); } -async function canEnableRemoteSupport(req, res, next) { - const [error, supportConfig] = await safe(support.getConfig()); - if (error) return next(new HttpError(503, error.message)); - - if (!supportConfig.remoteSupport) return next(new HttpError(405, 'feature disabled by admin')); - - next(); -} - async function enableRemoteSupport(req, res, next) { assert.strictEqual(typeof req.body, 'object'); diff --git a/src/routes/test/support-test.js b/src/routes/test/support-test.js index 01c588e07..6528d04fb 100644 --- a/src/routes/test/support-test.js +++ b/src/routes/test/support-test.js @@ -83,34 +83,6 @@ describe('Support API', function () { }); }); - describe('config', function () { - it('normal user cannot get config', async function () { - const response = await superagent.get(`${serverUrl}/api/v1/support/config`) - .query({ access_token: user.token }) - .ok(() => true); - - expect(response.statusCode).to.equal(403); - }); - - it('admin also cannot get config', async function () { - const response = await superagent.get(`${serverUrl}/api/v1/support/config`) - .query({ access_token: admin.token }) - .ok(() => true); - - expect(response.statusCode).to.equal(403); - }); - - it('owner can get config', async function () { - const response = await superagent.get(`${serverUrl}/api/v1/support/config`) - .query({ access_token: owner.token }); - - expect(response.statusCode).to.equal(200); - expect(response.body.email).to.be('support@cloudron.io'); - expect(response.body.remoteSupport).to.be(true); - expect(response.body.submitTickets).to.be(true); - }); - }); - describe('ticket', function () { it('fails without token', async function () { const response = await superagent.post(`${serverUrl}/api/v1/support/ticket`) diff --git a/src/server.js b/src/server.js index fb177fcf1..de4ea39dc 100644 --- a/src/server.js +++ b/src/server.js @@ -368,9 +368,9 @@ async function initializeExpressSync() { router.del ('/api/v1/mail/:domain/lists/:name', token, authorizeMailManager, routes.mail.delList); // support routes - router.post('/api/v1/support/ticket', json, token, authorizeOwner, routes.support.canCreateTicket, routes.support.createTicket); + router.post('/api/v1/support/ticket', json, token, authorizeOwner, routes.support.createTicket); router.get ('/api/v1/support/remote_support', token, authorizeOwner, routes.support.getRemoteSupport); - router.post('/api/v1/support/remote_support', json, token, authorizeOwner, routes.support.canEnableRemoteSupport, routes.support.enableRemoteSupport); + router.post('/api/v1/support/remote_support', json, token, authorizeOwner, routes.support.enableRemoteSupport); // domain routes router.post('/api/v1/domains', json, token, authorizeAdmin, routes.domains.add);