summaryrefslogtreecommitdiff
path: root/server/lib/middleware.js
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/middleware.js')
-rw-r--r--server/lib/middleware.js84
1 files changed, 80 insertions, 4 deletions
diff --git a/server/lib/middleware.js b/server/lib/middleware.js
index 4848ab0..0a0a9ce 100644
--- a/server/lib/middleware.js
+++ b/server/lib/middleware.js
@@ -6,11 +6,16 @@ var passport = require('passport'),
config = require('../../config.json'),
User = require('./schemas/User'),
Collaborator = require('./schemas/Collaborator'),
- Project = require('./schemas/Project');
+ Project = require('./schemas/Project'),
+ Layout = require('./schemas/Layout'),
+ Blueprint = require('./schemas/Blueprint'),
+ Plan = require('./schemas/Plan');
var middleware = {
+ plans: [],
+
enableCORS: function (req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
// TODO Check https vs. http
@@ -46,7 +51,7 @@ var middleware = {
},
ensureLocals: function (req, res, next) {
- res.locals.token = req.csrfToken();
+ res.locals.token = req.csrfToken()
res.locals.logged_in = req.isAuthenticated()
res.locals.user = req.user || { _id: undefined }
res.locals.config = config
@@ -56,10 +61,31 @@ var middleware = {
res.locals.ogUrl = "http://vvalls.com/"
res.locals.ogDescription = "3D gallery space, fully customizable"
res.locals.ogAuthor = "VValls"
+ res.locals.plans = middleware.plans
res.locals.opt = {}
next()
},
-
+
+ ensureUserProjectsCount: function(req, res, next){
+ var counts = { stock: 0, basic: 0, pro: 0 }
+ res.locals.projectCounts = counts
+ Project.count({ user_id: req.user._id }, function(err, count){
+ res.locals.projectCount = count || 0
+ next()
+ })
+ },
+
+ ensureUserLayoutsCount: function(req, res, next){
+ var counts = { basic: 0, pro: 0 }
+ res.locals.layoutCounts = counts
+ if (req.user.plan_level == 0) { return next() }
+
+ Layout.count({ user_id: req.user._id }, function(err, count){
+ res.locals.layoutCount = count || 0
+ next()
+ })
+ },
+
ensureProject: function (req, res, next) {
if (req.params.slug) {
Project.findOne({ slug: req.params.slug }, function(err, project){
@@ -75,13 +101,57 @@ var middleware = {
}
next()
})
- }
+ }
else {
req.project = null
next()
}
},
+ ensureLayout: function (req, res, next) {
+ if (req.params.slug) {
+ Layout.findOne({ slug: req.params.slug }, function(err, layout){
+ if (err) {
+ console.error(err)
+ req.layout = null
+ }
+ else if (! layout) {
+ req.layout = null
+ }
+ else {
+ req.layout = layout
+ }
+ next()
+ })
+ }
+ else {
+ req.layout = null
+ next()
+ }
+ },
+
+ ensureBlueprint: function (req, res, next) {
+ if (req.params.slug) {
+ Blueprint.findOne({ slug: req.params.slug }, function(err, blueprint){
+ if (err) {
+ console.error(err)
+ req.blueprint = null
+ }
+ else if (! blueprint) {
+ req.blueprint = null
+ }
+ else {
+ req.blueprint = blueprint
+ }
+ next()
+ })
+ }
+ else {
+ req.blueprint = null
+ next()
+ }
+ },
+
ensureIsCollaborator: function(req, res, next) {
req.isCollaborator = false
req.isOwner = false
@@ -106,6 +176,12 @@ var middleware = {
})
}
},
+
+ updatePlans: function(){
+ Plan.find({}).sort({ 'level': -1 }).exec(function (err, plans) {
+ middleware.plans = plans.map(function(plan){ return plan.toObject() })
+ })
+ },
}