From 65fcc3119c334b75dd13bcfdebf186afdc580a8f Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 15 May 2017 22:22:03 +0200 Subject: First typescript iteration --- server/controllers/api/clients.ts | 41 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 server/controllers/api/clients.ts (limited to 'server/controllers/api/clients.ts') diff --git a/server/controllers/api/clients.ts b/server/controllers/api/clients.ts new file mode 100644 index 000000000..902f62995 --- /dev/null +++ b/server/controllers/api/clients.ts @@ -0,0 +1,41 @@ +import express = require('express') + +import { CONFIG } from '../../initializers'; +import { logger } from '../../helpers' +const db = require('../../initializers/database') + +const clientsRouter = express.Router() + +clientsRouter.get('/local', getLocalClient) + +// Get the client credentials for the PeerTube front end +function getLocalClient (req, res, next) { + const serverHostname = CONFIG.WEBSERVER.HOSTNAME + const serverPort = CONFIG.WEBSERVER.PORT + let headerHostShouldBe = serverHostname + if (serverPort !== 80 && serverPort !== 443) { + headerHostShouldBe += ':' + serverPort + } + + // Don't make this check if this is a test instance + if (process.env.NODE_ENV !== 'test' && req.get('host') !== headerHostShouldBe) { + logger.info('Getting client tokens for host %s is forbidden (expected %s).', req.get('host'), headerHostShouldBe) + return res.type('json').status(403).end() + } + + db.OAuthClient.loadFirstClient(function (err, client) { + if (err) return next(err) + if (!client) return next(new Error('No client available.')) + + res.json({ + client_id: client.clientId, + client_secret: client.clientSecret + }) + }) +} + +// --------------------------------------------------------------------------- + +export { + clientsRouter +} -- cgit v1.2.3