summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-08-06 19:11:23 -0400
committerJules Laplace <jules@okfoc.us>2015-08-06 19:11:23 -0400
commit15692020fbc7bdfa66f9ecae0eaf844054c59e4a (patch)
tree20334dcc5d1f2921d3acedd0083a64fe8eabdd1a
parentf84ea4bf323f99479298f0576006267bf4182632 (diff)
plan restriction business logic
-rw-r--r--public/assets/javascripts/ui/site/LayoutsModal.js14
-rw-r--r--server/index.js2
-rw-r--r--server/lib/api/layouts.js11
-rw-r--r--server/lib/middleware.js16
4 files changed, 38 insertions, 5 deletions
diff --git a/public/assets/javascripts/ui/site/LayoutsModal.js b/public/assets/javascripts/ui/site/LayoutsModal.js
index 5974fc3..639d55c 100644
--- a/public/assets/javascripts/ui/site/LayoutsModal.js
+++ b/public/assets/javascripts/ui/site/LayoutsModal.js
@@ -15,13 +15,23 @@ var LayoutsIndex = View.extend({
},
populate: function(data){
- if (! data.length) {
+/*
+ if (data.layoutCount > data.plan.basic_layout_limit) {
+ }
+ if (data.projectCount > data.plan.stock_project_limit) {
+ }
+ if (data.projectCount > data.plan.basic_project_limit) {
+ }
+ if (data.projectCount > data.plan.pro_project_limit) {
+ }
+*/
+ if (! data.layouts.length) {
this.$templates.hide()
this.$form.hide()
this.$noTemplates.show()
}
this.$templatesList.empty()
- data.forEach(function(room){
+ data.layouts.forEach(function(room){
var $span = $("<span>")
$span.data("slug", room.slug)
diff --git a/server/index.js b/server/index.js
index 30cf69a..db9b051 100644
--- a/server/index.js
+++ b/server/index.js
@@ -139,7 +139,7 @@ site.route = function () {
app.get('/project/:slug/view', middleware.ensureProject, middleware.ensureIsCollaborator, views.reader)
app.get('/project/:slug/edit', middleware.ensureProject, middleware.ensureIsCollaborator, views.editor)
- app.get('/api/layout', middleware.ensureAuthenticated, api.layouts.index)
+ app.get('/api/layout', middleware.ensureAuthenticated, middleware.ensureUserProjectsCount, middleware.ensureUserLayoutsCount, api.layouts.index)
app.get('/api/layout/:slug', middleware.ensureAuthenticated, api.layouts.show)
app.post('/api/layout/new', middleware.ensureAuthenticated, middleware.ensureIsStaff, api.layouts.create)
app.post('/api/layout/edit', middleware.ensureAuthenticated, middleware.ensureIsStaff, api.layouts.update)
diff --git a/server/lib/api/layouts.js b/server/lib/api/layouts.js
index 641e9e2..7e7976c 100644
--- a/server/lib/api/layouts.js
+++ b/server/lib/api/layouts.js
@@ -3,13 +3,22 @@
var _ = require('lodash'),
util = require('../util'),
upload = require('../upload'),
+ middleware = require('../middleware'),
config = require('../../../config.json'),
Layout = require('../schemas/Layout');
var layouts = {
index: function(req, res){
+ // free layouts
+ // user layouts
Layout.find({}, function(err, docs){
- res.json(docs)
+ res.json({
+ layouts: docs,
+ plan: middleware.plans[ res.locals.user.plan_level || 0 ],
+ user: res.locals.user,
+ layoutCount: res.locals.layoutCount,
+ projectCount: res.locals.projectCount,
+ })
})
},
diff --git a/server/lib/middleware.js b/server/lib/middleware.js
index 35c520c..9d09a10 100644
--- a/server/lib/middleware.js
+++ b/server/lib/middleware.js
@@ -7,6 +7,7 @@ var passport = require('passport'),
User = require('./schemas/User'),
Collaborator = require('./schemas/Collaborator'),
Project = require('./schemas/Project'),
+ Layout = require('./schemas/Layout'),
Plan = require('./schemas/Plan');
@@ -63,7 +64,20 @@ var middleware = {
res.locals.opt = {}
next()
},
-
+
+ ensureUserProjectsCount: function(req, res, next){
+ Project.count({ user_id: req.user.id }, function(err, count){
+ res.locals.projectCount = count || 0
+ next()
+ })
+ },
+ ensureUserLayoutsCount: function(req, res, 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){