diff --git a/server/controllers/embed.controller.js b/server/controllers/embed.controller.js index 599267ac79..2ac48a3685 100644 --- a/server/controllers/embed.controller.js +++ b/server/controllers/embed.controller.js @@ -9,36 +9,41 @@ import { import { get404Sketch } from '../views/404Page'; export function serveProject(req, res) { - Project.findById(req.params.project_id).exec((err, project) => { - if (err || !project) { - get404Sketch((html) => res.send(html)); - return; - } - // TODO this does not parse html - const { files } = project; - const htmlFile = files.find((file) => file.name.match(/\.html$/i)).content; - const filesToInject = files.filter((file) => - file.name.match(/\.(js|css)$/i) - ); - injectMediaUrls(filesToInject, files, req.params.project_id); + const projectId = req.params.project_id; + Project.findOne( + { $or: [{ _id: projectId }, { slug: projectId }] }, + (err, project) => { + if (err || !project) { + get404Sketch((html) => res.send(html)); + return; + } + // TODO this does not parse html + const { files } = project; + const htmlFile = files.find((file) => file.name.match(/\.html$/i)) + .content; + const filesToInject = files.filter((file) => + file.name.match(/\.(js|css)$/i) + ); + injectMediaUrls(filesToInject, files, req.params.project_id); - jsdom.env(htmlFile, (innerErr, window) => { - const sketchDoc = window.document; + jsdom.env(htmlFile, (innerErr, window) => { + const sketchDoc = window.document; - const base = sketchDoc.createElement('base'); - const fullUrl = `//${req.get('host')}${req.originalUrl}`; - base.href = `${fullUrl}/`; - sketchDoc.head.appendChild(base); + const base = sketchDoc.createElement('base'); + const fullUrl = `//${req.get('host')}${req.originalUrl}`; + base.href = `${fullUrl}/`; + sketchDoc.head.appendChild(base); - resolvePathsForElementsWithAttribute('src', sketchDoc, files); - resolvePathsForElementsWithAttribute('href', sketchDoc, files); - resolveScripts(sketchDoc, files); - resolveStyles(sketchDoc, files); + resolvePathsForElementsWithAttribute('src', sketchDoc, files); + resolvePathsForElementsWithAttribute('href', sketchDoc, files); + resolveScripts(sketchDoc, files); + resolveStyles(sketchDoc, files); - res.setHeader('Cache-Control', 'public, max-age=0'); - res.send(serializeDocument(sketchDoc)); - }); - }); + res.setHeader('Cache-Control', 'public, max-age=0'); + res.send(serializeDocument(sketchDoc)); + }); + } + ); } export default serveProject; diff --git a/server/controllers/file.controller.js b/server/controllers/file.controller.js index c3d0d15f64..78d756a2da 100644 --- a/server/controllers/file.controller.js +++ b/server/controllers/file.controller.js @@ -141,26 +141,30 @@ export function deleteFile(req, res) { } export function getFileContent(req, res) { - Project.findById(req.params.project_id, (err, project) => { - if (err || project === null) { - res.status(404).send({ - success: false, - message: 'Project with that id does not exist.' - }); - return; - } - const filePath = req.params[0]; - const resolvedFile = resolvePathToFile(filePath, project.files); - if (!resolvedFile) { - res.status(404).send({ - success: false, - message: 'File with that name and path does not exist.' - }); - return; + const projectId = req.params.project_id; + Project.findOne( + { $or: [{ _id: projectId }, { slug: projectId }] }, + (err, project) => { + if (err || project === null) { + res.status(404).send({ + success: false, + message: 'Project with that id does not exist.' + }); + return; + } + const filePath = req.params[0]; + const resolvedFile = resolvePathToFile(filePath, project.files); + if (!resolvedFile) { + res.status(404).send({ + success: false, + message: 'File with that name and path does not exist.' + }); + return; + } + const contentType = + mime.lookup(resolvedFile.name) || 'application/octet-stream'; + res.set('Content-Type', contentType); + res.send(resolvedFile.content); } - const contentType = - mime.lookup(resolvedFile.name) || 'application/octet-stream'; - res.set('Content-Type', contentType); - res.send(resolvedFile.content); - }); + ); } diff --git a/server/controllers/project.controller.js b/server/controllers/project.controller.js index 5334828256..83d9fc77c1 100644 --- a/server/controllers/project.controller.js +++ b/server/controllers/project.controller.js @@ -123,7 +123,8 @@ export function getProjectsForUserId(userId) { } export function getProjectAsset(req, res) { - Project.findById(req.params.project_id) + const projectId = req.params.project_id; + Project.findOne({ $or: [{ _id: projectId }, { slug: projectId }] }) .populate('user', 'username') .exec(async (err, project) => { // eslint-disable-line if (err) {