summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJules Laplace <jules@okfoc.us>2015-01-07 13:53:27 -0500
committerJules Laplace <jules@okfoc.us>2015-01-07 13:53:27 -0500
commit2d4ed7d888727e1b973c2581b694d900e30c2ebd (patch)
tree7abb511540677fd50cdb3e85cffb8e182a2a9b41
parentf7475059dadf25161471e8b3086d127a1d1545f9 (diff)
plan/subscription schemas
-rw-r--r--server/lib/schemas/Plan.js36
-rw-r--r--server/lib/schemas/Subscription.js25
-rw-r--r--server/lib/views/index.js8
-rw-r--r--server/lib/views/subscription.js51
4 files changed, 113 insertions, 7 deletions
diff --git a/server/lib/schemas/Plan.js b/server/lib/schemas/Plan.js
new file mode 100644
index 0000000..3e74997
--- /dev/null
+++ b/server/lib/schemas/Plan.js
@@ -0,0 +1,36 @@
+/* jshint node: true */
+
+var mongoose = require('mongoose'),
+ _ = require('lodash'),
+ crypto = require('crypto'),
+ config = require('../../../config.json'),
+ util = require('../util');
+
+var PlanSchema = new mongoose.Schema({
+ name: { type: String },
+ slug: { type: String },
+
+ monthly_price: { type: Number },
+ yearly_price: { type: Number },
+
+ basic_layout_limit: { type: Number },
+ pro_layout_limit: { type: Number },
+
+ stock_layout_project_limit: { type: Number },
+ basic_layout_project_limit: { type: Number },
+ pro_layout_project_limit: { type: Number },
+
+ permissions: {
+ basic_editor: { type: Boolean, default: false },
+ pro_editor: { type: Boolean, default: false },
+ solids: { type: Boolean, default: false },
+ collaborators: { type: Boolean, default: false },
+ no_logo: { type: Boolean, default: false },
+ },
+
+ created_at: { type: Date, default: Date.now },
+ updated_at: { type: Date, default: Date.now },
+})
+
+module.exports = exports = mongoose.model('plan', PlanSchema);
+exports.schema = PlanSchema;
diff --git a/server/lib/schemas/Subscription.js b/server/lib/schemas/Subscription.js
new file mode 100644
index 0000000..8d0b10e
--- /dev/null
+++ b/server/lib/schemas/Subscription.js
@@ -0,0 +1,25 @@
+/* jshint node: true */
+
+var mongoose = require('mongoose'),
+ _ = require('lodash'),
+ crypto = require('crypto'),
+ config = require('../../../config.json'),
+ util = require('../util');
+
+var SubscriptionSchema = new mongoose.Schema({
+ user_id: { type: mongoose.Schema.ObjectId, index: true },
+
+ monthly_total: { type: Number },
+ yearly_total: { type: Number },
+
+ plans: [{
+ tier: { type: String },
+ monthly: { type: Boolean },
+ }]
+
+ created_at: { type: Date, default: Date.now },
+ updated_at: { type: Date, default: Date.now },
+})
+
+module.exports = exports = mongoose.model('subscription', SubscriptionSchema);
+exports.schema = SubscriptionSchema;
diff --git a/server/lib/views/index.js b/server/lib/views/index.js
index 8c3e63d..3326499 100644
--- a/server/lib/views/index.js
+++ b/server/lib/views/index.js
@@ -21,6 +21,7 @@ marked.setOptions({
var views = module.exports = {
staff: require('./staff'),
+ subscription: require('./subscription'),
editor_new: function (req, res) {
if (! req.user) {
@@ -88,13 +89,6 @@ var views = module.exports = {
},
home: function (req, res) {
- // while in development, blank homepage if not logged in
-/*
- if (! req.user) {
- res.send("<html></html>")
- return
- }
-*/
views_middleware.fetchProjects({ featured: true }, null, null, function(err, projects){
res.render('home', {
projects: projects || []
diff --git a/server/lib/views/subscription.js b/server/lib/views/subscription.js
new file mode 100644
index 0000000..77db1a0
--- /dev/null
+++ b/server/lib/views/subscription.js
@@ -0,0 +1,51 @@
+/* jshint node: true */
+
+var User = require('../schemas/User'),
+ Subscription = require('../schemas/Subscription'),
+ config = require('../../../config'),
+ middleware = require('../middleware'),
+ util = require('../util'),
+ _ = require('lodash'),
+ moment = require('moment');
+
+var subscription = module.exports = {
+
+ fields: {
+ user: "_id username displayName photo created_at updated_at last_seen created_ip last_ip",
+ project: "_id name slug user_id privacy created_at updated_at",
+ },
+
+ defaults: {
+ user: {
+ _id: "", username: "", displayName: "",
+ created_at: "", updated_at: "", created_ip: "", last_ip: "",
+ },
+ },
+
+ middleware: {
+ },
+
+ helpers: {
+ project: function(project){
+ project = project.toObject()
+ project.date = moment( project.updated_at || project.created_at ).format("M/DD/YYYY hh:mm a")
+ project.user = {}
+ return project
+ },
+ },
+
+ route: function(app){
+ app.get('/staff',
+ middleware.ensureAuthenticated,
+ middleware.ensureIsStaff,
+
+ staff.middleware.ensureRecentUsers,
+ staff.middleware.ensureUsersCount,
+ staff.middleware.ensureProjectsCount,
+ staff.middleware.ensureMediaCount,
+
+ staff.index
+ );
+ },
+
+}