summaryrefslogtreecommitdiff
path: root/server
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2014-06-23 15:27:02 -0400
committerJules Laplace <jules@okfoc.us>2014-06-23 15:27:02 -0400
commitb0ab3271996d542e718e8e3fc910053d60cf81f6 (patch)
treefb147d83a108c4945b6bb42850e62aa78ead5226 /server
parentb9dacb35ff90c6f666121742cf03f30ea4d2129d (diff)
standalone viewer
Diffstat (limited to 'server')
-rw-r--r--server/index.js4
-rw-r--r--server/lib/middleware.js25
-rw-r--r--server/lib/views.js26
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) {