diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-06-23 15:27:02 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-06-23 15:27:02 -0400 |
| commit | b0ab3271996d542e718e8e3fc910053d60cf81f6 (patch) | |
| tree | fb147d83a108c4945b6bb42850e62aa78ead5226 /server | |
| parent | b9dacb35ff90c6f666121742cf03f30ea4d2129d (diff) | |
standalone viewer
Diffstat (limited to 'server')
| -rw-r--r-- | server/index.js | 4 | ||||
| -rw-r--r-- | server/lib/middleware.js | 25 | ||||
| -rw-r--r-- | server/lib/views.js | 26 |
3 files changed, 50 insertions, 5 deletions
diff --git a/server/index.js b/server/index.js index f76c40b..aed0ea1 100644 --- a/server/index.js +++ b/server/index.js @@ -111,7 +111,7 @@ site.route = function () { app.get('/project', middleware.ensureAuthenticated, views.modal) app.get('/project/new', middleware.ensureAuthenticated, views.modal) app.get('/project/new/:layout', middleware.ensureAuthenticated, views.editor) - app.get('/project/:name', middleware.ensureAuthenticated, views.editor) + app.get('/project/:slug', middleware.ensureProject, views.editor) app.get('/api/layouts', middleware.ensureAuthenticated, api.layouts.index) app.get('/api/layouts/:slug', middleware.ensureAuthenticated, api.layouts.show) @@ -120,7 +120,7 @@ site.route = function () { app.delete('/api/layouts/destroy', middleware.ensureAuthenticated, middleware.ensureIsStaff, api.layouts.destroy) app.get('/api/projects', middleware.ensureAuthenticated, api.projects.index) - app.get('/api/projects/:slug', middleware.ensureAuthenticated, api.projects.show) + app.get('/api/projects/:slug', api.projects.show) app.post('/api/projects/new', middleware.ensureAuthenticated, api.projects.create) app.post('/api/projects/edit', middleware.ensureAuthenticated, api.projects.update) app.delete('/api/projects/destroy', middleware.ensureAuthenticated, api.projects.destroy) diff --git a/server/lib/middleware.js b/server/lib/middleware.js index c74c496..0bc3f7a 100644 --- a/server/lib/middleware.js +++ b/server/lib/middleware.js @@ -4,7 +4,8 @@ var passport = require('passport'), _ = require('lodash'), config = require('../../config.json'), - User = require('./schemas/User'); + User = require('./schemas/User'), + Project = require('./schemas/Project'); var middleware = { @@ -41,6 +42,28 @@ var middleware = { next() }, + ensureProject: function (req, res, next) { + if (req.params.slug) { + Project.findOne({ slug: req.params.slug }, function(err, project){ + if (err) { + console.error(err) + req.project = null + } + else if (! project) { + req.project = null + } + else { + req.project = project + } + next() + }) + } + else { + req.project = null + next() + } + } + } module.exports = middleware diff --git a/server/lib/views.js b/server/lib/views.js index bcb0e90..000ff4d 100644 --- a/server/lib/views.js +++ b/server/lib/views.js @@ -6,7 +6,8 @@ var User = require('./schemas/User'), config = require('../../config'), marked = require('marked'), util = require('./util'), - _ = require('lodash'); + _ = require('lodash'), + moment = require('moment'); marked.setOptions({ renderer: new marked.Renderer(), @@ -19,7 +20,28 @@ marked.setOptions({ var views = {} views.editor = function (req, res) { - res.render('editor') + if (! req.user && ! req.project) { + res.redirect('/') + } + else if (! req.user || (req.project && String(req.user._id) !== String(req.project.user_id))) { + User.findOne({ _id: req.project.user_id }, function(err, user) { + if (err || ! user) { + console.error(err) + res.redirect('/') + return + } + res.render('reader', { + name: util.sanitize(req.project.name), + description: util.sanitize(req.project.description), + date: moment(req.project.updated_at).format("M/DD/YYYY"), + author: user.displayName, + authorlink: "/profile/" + user.username, + }) + }) + } + else { + res.render('editor') + } } views.builder = function (req, res) { |
