summaryrefslogtreecommitdiff
path: root/bucky/app
diff options
context:
space:
mode:
authorjulian laplace <julescarbon@gmail.com>2022-10-25 23:26:31 +0200
committerjulian laplace <julescarbon@gmail.com>2022-10-25 23:26:31 +0200
commit1cfed2612fd1042a15d470a44ec87588c966dc12 (patch)
treeba850f589194a21fd1587dd71dfcd056a242e4ac /bucky/app
parentae311b71cccf5df9e0e19e276615cc32426d9de1 (diff)
hootstream... dark mode only
Diffstat (limited to 'bucky/app')
-rw-r--r--bucky/app/api.js25
-rw-r--r--bucky/app/bucky.js1196
-rw-r--r--bucky/app/pages.js222
-rw-r--r--bucky/app/site.js5
4 files changed, 768 insertions, 680 deletions
diff --git a/bucky/app/api.js b/bucky/app/api.js
index 857849e..a2f85d0 100644
--- a/bucky/app/api.js
+++ b/bucky/app/api.js
@@ -98,6 +98,31 @@ function route(app) {
function (req, res) {
res.json({
threads: res.threads,
+ hootstream: res.hootstream,
+ hootbox: res.hootbox,
+ lastlog: res.lastlog,
+ mail: res.mail,
+ });
+ }
+ );
+ app.get(
+ "/api/stream",
+ bucky.ensureLastlog,
+ middleware.ensureAuthenticated,
+ // bucky.ensureLatestThreads,
+ bucky.ensureHootbox,
+ bucky.ensureHootstream,
+ privacy.filterPrivateThreads,
+ bucky.ensureCommentCountsForThreads,
+ bucky.ensureFileCountsForThreads,
+ bucky.ensureKeywordsForThreads,
+ bucky.bumpLastSeen,
+ bucky.checkMail,
+ function (req, res) {
+ res.json({
+ threads: res.threads,
+ files: res.files,
+ comments: res.comments,
hootbox: res.hootbox,
lastlog: res.lastlog,
mail: res.mail,
diff --git a/bucky/app/bucky.js b/bucky/app/bucky.js
index b9d9a16..5dc7244 100644
--- a/bucky/app/bucky.js
+++ b/bucky/app/bucky.js
@@ -1,87 +1,107 @@
-var _ = require('lodash')
-var db = require('../db')
-var util = require('../util/util')
-var upload = require('../util/upload')
-
-var bucky = module.exports = {
+var _ = require("lodash");
+var db = require("../db");
+var util = require("../util/util");
+var upload = require("../util/upload");
+var bucky = (module.exports = {
/* INDEX */
- ensureLatestThreads: function (req, res, next){
- db.getLatestThreads().then(function(threads){
- res.threads = threads
- res.threads_ids = res.threads.pluck("id").sort()
- res.keywords = _.uniq(res.threads.pluck("keyword"))
- next()
- })
+ ensureLatestThreads: function (req, res, next) {
+ db.getLatestThreads().then(function (threads) {
+ res.threads = threads;
+ res.threads_ids = res.threads.pluck("id").sort();
+ res.keywords = _.uniq(res.threads.pluck("keyword"));
+ next();
+ });
},
- ensureCommentCountsForThreads: function (req, res, next){
- db.getCommentCounts(res.threads_ids).then(function(counts){
- var lookup = {}
- counts.forEach(function(c){
- lookup[c.thread] = c
- })
- res.threads.forEach(function(thread){
+ ensureCommentCountsForThreads: function (req, res, next) {
+ db.getCommentCounts(res.threads_ids).then(function (counts) {
+ var lookup = {};
+ counts.forEach(function (c) {
+ lookup[c.thread] = c;
+ });
+ res.threads.forEach(function (thread) {
if (lookup[thread.id]) {
- thread.set("comment_count", lookup[thread.id].count)
+ thread.set("comment_count", lookup[thread.id].count);
}
- })
- next()
- })
+ });
+ next();
+ });
},
- ensureFileCountsForThreads: function (req, res, next){
- db.getFileSizes(res.threads_ids).then(function(counts){
- var lookup = {}
- counts.forEach(function(c){
- lookup[c.thread] = c
- })
- res.threads.forEach(function(t){
- var c = lookup[t.id]
- t.set("file_count", c ? c.count : 0)
- t.set("size", c ? c.size : 0)
- })
- next()
- })
+ ensureFileCountsForThreads: function (req, res, next) {
+ db.getFileSizes(res.threads_ids).then(function (counts) {
+ var lookup = {};
+ counts.forEach(function (c) {
+ lookup[c.thread] = c;
+ });
+ res.threads.forEach(function (t) {
+ var c = lookup[t.id];
+ t.set("file_count", c ? c.count : 0);
+ t.set("size", c ? c.size : 0);
+ });
+ next();
+ });
},
- ensureKeywordsForThreads: function (req, res, next){
- db.getKeywords(res.keywords).then(function(keywords){
- var lookup = {}
- keywords.forEach(function(k){
- lookup[k.get('keyword')] = k
- })
- res.threads.forEach(function(t){
- var kw = t.get('keyword')
- if (! kw) return
- var k = lookup[kw]
- if (! k) return
- if (! t.get("color")) {
- t.set("color", k.get("color"))
+ ensureKeywordsForThreads: function (req, res, next) {
+ db.getKeywords(res.keywords).then(function (keywords) {
+ var lookup = {};
+ keywords.forEach(function (k) {
+ lookup[k.get("keyword")] = k;
+ });
+ res.threads.forEach(function (t) {
+ var kw = t.get("keyword");
+ if (!kw) return;
+ var k = lookup[kw];
+ if (!k) return;
+ if (!t.get("color")) {
+ t.set("color", k.get("color"));
}
- })
- next()
- })
+ });
+ next();
+ });
},
- ensureHootbox: function (req, res, next){
- db.getCommentsForThread(1, 20, 0, "desc").then(function(hootbox){
- res.hootbox = hootbox
- next()
- })
+ ensureHootbox: function (req, res, next) {
+ db.getCommentsForThread(1, 20, 0, "desc").then(function (hootbox) {
+ res.hootbox = hootbox;
+ next();
+ });
+ },
+ ensureHootstream: function (req, res, next) {
+ Promise.all([
+ db.getHootstreamFiles({
+ limit: req.query.limit || 10,
+ offset: req.query.offset || 0,
+ }),
+ db.getHootstreamComments({
+ limit: req.query.limit || 10,
+ offset: req.query.offset || 0,
+ }),
+ ]).then(([files, comments]) => {
+ db.getHootstreamThreads({ files, comments }).then((threads) => {
+ res.files = files;
+ res.comments = comments;
+ res.threads = threads;
+ res.threads_ids = res.threads.pluck("id").sort();
+ res.keywords = _.uniq(res.threads.pluck("keyword"));
+ next();
+ });
+ });
},
- ensureLastlog: function (req, res, next){
- db.getLastlog(5).then(function(lastlog){
- res.lastlog = lastlog
- next()
- })
+ ensureLastlog: function (req, res, next) {
+ db.getLastlog(5).then(function (lastlog) {
+ res.lastlog = lastlog;
+ next();
+ });
},
- createThread: function (req, res, next){
- if (! req.body.title || ! req.body.title.length) {
- res.json({ error: "no title" })
- return
+ createThread: function (req, res, next) {
+ if (!req.body.title || !req.body.title.length) {
+ res.json({ error: "no title" });
+ return;
}
var data = {
title: req.body.title,
keyword: req.body.keyword,
- username: req.user.get('username'),
+ username: req.user.get("username"),
createdate: util.now(),
lastmodified: util.now(),
size: 0,
@@ -89,666 +109,698 @@ var bucky = module.exports = {
color: req.body.color,
viewed: 0,
revision: 0,
- }
- db.createThread(data).then(function(thread){
- res.thread = thread
- next()
- })
+ };
+ db.createThread(data).then(function (thread) {
+ res.thread = thread;
+ next();
+ });
},
/* DETAILS */
- ensureThread: function (req, res, next){
- var id = req.params.id.replace(/\D/g, "")
- if (! id) {
- return res.sendStatus(404)
+ ensureThread: function (req, res, next) {
+ var id = req.params.id.replace(/\D/g, "");
+ if (!id) {
+ return res.sendStatus(404);
}
- db.getThread(id).then(function(thread){
+ db.getThread(id).then(function (thread) {
if (thread) {
- res.thread = thread
- next()
- }
- else {
- res.sendStatus(404)
+ res.thread = thread;
+ next();
+ } else {
+ res.sendStatus(404);
}
- })
+ });
},
- ensureThreadById: function (req, res, next){
- var id = req.params.thread_id.replace(/\D/g, "")
- if (! id) {
- return res.sendStatus(404)
+ ensureThreadById: function (req, res, next) {
+ var id = req.params.thread_id.replace(/\D/g, "");
+ if (!id) {
+ return res.sendStatus(404);
}
- db.getThread(id).then(function(thread){
+ db.getThread(id).then(function (thread) {
if (thread) {
- res.thread = thread
- next()
- }
- else {
- res.sendStatus(404)
+ res.thread = thread;
+ next();
+ } else {
+ res.sendStatus(404);
}
- })
+ });
},
- prepareThread: function (req, res, next){
- var thread = res.thread
+ prepareThread: function (req, res, next) {
+ var thread = res.thread;
if (thread) {
- var settings
+ var settings;
try {
- settings = JSON.parse(thread.get('settings') || '{}')
- } catch(e) {
- settings = {}
+ settings = JSON.parse(thread.get("settings") || "{}");
+ } catch (e) {
+ settings = {};
}
- res.thread.set("settings", settings)
+ res.thread.set("settings", settings);
}
- next()
+ next();
},
- ensureCommentThread: function (req, res, next){
- if (! res.comment) {
- return res.sendStatus(404)
+ ensureCommentThread: function (req, res, next) {
+ if (!res.comment) {
+ return res.sendStatus(404);
}
- var id = res.comment.get('thread')
- if (! id) {
- return res.sendStatus(404)
+ var id = res.comment.get("thread");
+ if (!id) {
+ return res.sendStatus(404);
}
- db.getThread(id).then(function(thread){
+ db.getThread(id).then(function (thread) {
if (thread) {
- res.thread = thread
- next()
+ res.thread = thread;
+ next();
+ } else {
+ res.sendStatus(404);
}
- else {
- res.sendStatus(404)
- }
- })
+ });
},
- ensureKeywordForThread: function (req, res, next){
- var keyword = res.thread.get('keyword')
- if (! keyword) return next()
- db.getKeyword(keyword).then(function(keyword){
- res.keyword = keyword
- next()
- })
+ ensureKeywordForThread: function (req, res, next) {
+ var keyword = res.thread.get("keyword");
+ if (!keyword) return next();
+ db.getKeyword(keyword).then(function (keyword) {
+ res.keyword = keyword;
+ next();
+ });
},
- ensureCommentsForThread: function (req, res, next){
- db.getCommentsForThread(res.thread.get('id')).then(function(comments){
- res.comments = comments || []
- next()
- })
+ ensureCommentsForThread: function (req, res, next) {
+ db.getCommentsForThread(res.thread.get("id")).then(function (comments) {
+ res.comments = comments || [];
+ next();
+ });
},
- ensureFilesForThread: function (req, res, next){
- db.getFilesForThread(res.thread.get('id')).then(function(files){
- res.files = files || []
- next()
- })
+ ensureFilesForThread: function (req, res, next) {
+ db.getFilesForThread(res.thread.get("id")).then(function (files) {
+ res.files = files || [];
+ next();
+ });
},
- bumpViewCount: function(req, res, next) {
- res.thread.set('viewed', res.thread.get('viewed') + 1)
- res.thread.save().then( () => next() )
+ bumpViewCount: function (req, res, next) {
+ res.thread.set("viewed", res.thread.get("viewed") + 1);
+ res.thread.save().then(() => next());
},
- bumpThreadRevisions: function (req, res, next){
+ bumpThreadRevisions: function (req, res, next) {
// don't bump the hootbox!
- if (res.thread.get('id') == 1) {
- return next()
+ if (res.thread.get("id") == 1) {
+ return next();
}
- res.thread.set('revision', res.thread.get('revision')+1)
- res.thread.set('lastmodified', util.now())
- res.thread.save().then( () => next() )
+ res.thread.set("revision", res.thread.get("revision") + 1);
+ res.thread.set("lastmodified", util.now());
+ res.thread.save().then(() => next());
},
- updateThreadSettings: function (req, res, next){
- var title = util.sanitize(req.body.title || "")
- if (! title || ! title.length) {
- return res.sendStatus(500)
+ updateThreadSettings: function (req, res, next) {
+ var title = util.sanitize(req.body.title || "");
+ if (!title || !title.length) {
+ return res.sendStatus(500);
}
- var keyword = util.sanitize(req.body.keyword || "")
- var privacy = parseInt(req.body.privacy) || 0
- var allowed = util.sanitize(req.body.allowed || "")
- var settings
- if (typeof req.body.settings === 'object') {
+ var keyword = util.sanitize(req.body.keyword || "");
+ var privacy = parseInt(req.body.privacy) || 0;
+ var allowed = util.sanitize(req.body.allowed || "");
+ var settings;
+ if (typeof req.body.settings === "object") {
try {
- settings = JSON.stringify(req.body.settings)
- } catch(e) {
- console.error("JSON error in thread settings!!!!")
- return res.sendStatus(500)
+ settings = JSON.stringify(req.body.settings);
+ } catch (e) {
+ console.error("JSON error in thread settings!!!!");
+ return res.sendStatus(500);
}
}
- if (! settings) {
- return res.sendStatus(500)
+ if (!settings) {
+ return res.sendStatus(500);
}
- res.thread.set('title', title)
- res.thread.set('keyword', keyword)
- res.thread.set('color', util.sanitize(req.body.color || 'blue'))
- res.thread.set('revision', res.thread.get('revision')+1)
- res.thread.set('settings', settings)
- res.thread.set('privacy', privacy)
- res.thread.set('allowed', allowed)
- res.thread.save()
- .then( () => next() )
- .catch(err => {
- console.error(err)
- next()
- })
+ res.thread.set("title", title);
+ res.thread.set("keyword", keyword);
+ res.thread.set("color", util.sanitize(req.body.color || "blue"));
+ res.thread.set("revision", res.thread.get("revision") + 1);
+ res.thread.set("settings", settings);
+ res.thread.set("privacy", privacy);
+ res.thread.set("allowed", allowed);
+ res.thread
+ .save()
+ .then(() => next())
+ .catch((err) => {
+ console.error(err);
+ next();
+ });
},
- buryThread: function (req, res, next){
- res.thread.set('lastmodified', util.now() - (14 * 86400))
- res.thread.save().then( () => next() )
+ buryThread: function (req, res, next) {
+ res.thread.set("lastmodified", util.now() - 14 * 86400);
+ res.thread.save().then(() => next());
},
-// ensureInterestedUsers: function(req, res, next){
-// // given a thread, find people who might be interested in it
-// // - other people who have been in threads with you
-// // - other people who have posted on the keyword
-// // for now though, just show the last 20 people who have logged in..
-// db.getLastlog(21).then( (users) => {
-// res.interestedUsers = users
-// next()
-// }).catch( () => {
-// res.interestedUsers = []
-// next()
-// })
-// },
-// ensureThreadUsers: function(req, res, next) {
-// db.getThreadUsers(res.thread.get('id')).then(thread_users => {
-// res.thread_users = thread_users
-// next()
-// })
-// },
- checkUsernames: function(req, res, next) {
- if (! req.body.usernames) return res.sendStatus(500)
- db.checkUsernames(req.body.usernames).then( (users) => {
- res.usernames = users.map(user => user.username)
- next()
- }).catch((err) => {
- console.log(err)
- res.usernames = []
- next()
- })
+ // ensureInterestedUsers: function(req, res, next){
+ // // given a thread, find people who might be interested in it
+ // // - other people who have been in threads with you
+ // // - other people who have posted on the keyword
+ // // for now though, just show the last 20 people who have logged in..
+ // db.getLastlog(21).then( (users) => {
+ // res.interestedUsers = users
+ // next()
+ // }).catch( () => {
+ // res.interestedUsers = []
+ // next()
+ // })
+ // },
+ // ensureThreadUsers: function(req, res, next) {
+ // db.getThreadUsers(res.thread.get('id')).then(thread_users => {
+ // res.thread_users = thread_users
+ // next()
+ // })
+ // },
+ checkUsernames: function (req, res, next) {
+ if (!req.body.usernames) return res.sendStatus(500);
+ db.checkUsernames(req.body.usernames)
+ .then((users) => {
+ res.usernames = users.map((user) => user.username);
+ next();
+ })
+ .catch((err) => {
+ console.log(err);
+ res.usernames = [];
+ next();
+ });
},
destroyThread: function (req, res, next) {
- console.log(">>> destroying thread", res.thread.get('id'))
+ console.log(">>> destroying thread", res.thread.get("id"));
var commentPromises = res.comments.map((comment) => {
- return comment.destroy()
- })
- var filePromises = db.destroyFiles(res.files)
- var threadPromise = res.thread.destroy()
- var promises = [ threadPromise ].concat(commentPromises).concat(filePromises)
- Promise.all(promises).then( () => {
- next()
- }).catch( (err) => {
- res.sendStatus(500)
- })
+ return comment.destroy();
+ });
+ var filePromises = db.destroyFiles(res.files);
+ var threadPromise = res.thread.destroy();
+ var promises = [threadPromise].concat(commentPromises).concat(filePromises);
+ Promise.all(promises)
+ .then(() => {
+ next();
+ })
+ .catch((err) => {
+ res.sendStatus(500);
+ });
},
/* KEYWORDS */
- ensureKeyword: function (req, res, next){
- var keyword = req.params.keyword
- if (! keyword) {
- return res.sendStatus(404)
+ ensureKeyword: function (req, res, next) {
+ var keyword = req.params.keyword;
+ if (!keyword) {
+ return res.sendStatus(404);
}
- db.getKeyword(keyword).then(function(k){
- if (! k) {
- return res.sendStatus(404)
+ db.getKeyword(keyword).then(function (k) {
+ if (!k) {
+ return res.sendStatus(404);
}
- res.keyword = k
- next()
- })
+ res.keyword = k;
+ next();
+ });
},
- ensureKeywords: function (req, res, next){
- db.getKeywords().then(function(k){
- if (! k) {
- return res.sendStatus(404)
+ ensureKeywords: function (req, res, next) {
+ db.getKeywords().then(function (k) {
+ if (!k) {
+ return res.sendStatus(404);
}
- res.keywords = k
- next()
- })
+ res.keywords = k;
+ next();
+ });
},
- ensureLatestKeywordThreads: function (req, res, next){
- db.getLatestKeywordThreads().then(function(threads){
- res.threads = threads
- next()
- })
+ ensureLatestKeywordThreads: function (req, res, next) {
+ db.getLatestKeywordThreads().then(function (threads) {
+ res.threads = threads;
+ next();
+ });
},
- ensureThreadGroups: function (req, res, next){
- db.getThreadGroups().then(function(threadGroups){
- res.threadGroups = threadGroups
- next()
- })
+ ensureThreadGroups: function (req, res, next) {
+ db.getThreadGroups().then(function (threadGroups) {
+ res.threadGroups = threadGroups;
+ next();
+ });
},
- ensureThreadsForKeyword: function (req, res, next){
- var keyword = req.params.keyword
- if (! keyword) {
- res.sendStatus(404)
+ ensureThreadsForKeyword: function (req, res, next) {
+ var keyword = req.params.keyword;
+ if (!keyword) {
+ res.sendStatus(404);
}
- db.getThreadsForKeyword(keyword).then(function(threads){
- res.threads = threads
- res.threads_ids = res.threads.pluck("id").sort()
- res.keywords = _.uniq(res.threads.pluck("keyword"))
- next()
- })
+ db.getThreadsForKeyword(keyword).then(function (threads) {
+ res.threads = threads;
+ res.threads_ids = res.threads.pluck("id").sort();
+ res.keywords = _.uniq(res.threads.pluck("keyword"));
+ next();
+ });
},
- ensureThreadsForUser: function (req, res, next){
- var username = res.user.username
- var limit = parseInt(req.params.limit) || 10
- var offset = parseInt(req.params.offset) || 0
- if (! username) {
- res.sendStatus(404)
+ ensureThreadsForUser: function (req, res, next) {
+ var username = res.user.username;
+ var limit = parseInt(req.params.limit) || 10;
+ var offset = parseInt(req.params.offset) || 0;
+ if (!username) {
+ res.sendStatus(404);
}
- db.getThreadsForUser(username, limit, offset).then(function(threads){
- res.threads = threads
- res.threads_ids = res.threads.pluck("id").sort()
- res.keywords = _.uniq(res.threads.pluck("keyword"))
- next()
- })
+ db.getThreadsForUser(username, limit, offset).then(function (threads) {
+ res.threads = threads;
+ res.threads_ids = res.threads.pluck("id").sort();
+ res.keywords = _.uniq(res.threads.pluck("keyword"));
+ next();
+ });
},
- ensureTopThreadsForUser: function (req, res, next){
- var username = res.user.username
- var limit = parseInt(req.params.limit) || 10
- var offset = parseInt(req.params.offset) || 0
- if (! username) {
- res.sendStatus(404)
+ ensureTopThreadsForUser: function (req, res, next) {
+ var username = res.user.username;
+ var limit = parseInt(req.params.limit) || 10;
+ var offset = parseInt(req.params.offset) || 0;
+ if (!username) {
+ res.sendStatus(404);
}
- db.getTopThreadsForUser(username, limit, offset).then(function(top_threads){
- res.topThreads = top_threads
- res.topThreads_ids = res.topThreads.pluck("id").sort()
- res.topKeywords = _.uniq(res.topThreads.pluck("keyword"))
- next()
- })
+ db.getTopThreadsForUser(username, limit, offset).then(function (
+ top_threads
+ ) {
+ res.topThreads = top_threads;
+ res.topThreads_ids = res.topThreads.pluck("id").sort();
+ res.topKeywords = _.uniq(res.topThreads.pluck("keyword"));
+ next();
+ });
},
- ensureCommentsForUser: function (req, res, next){
- db.getCommentsForUser(res.user.username).then(function(comments){
- res.comments = comments || []
- next()
- })
+ ensureCommentsForUser: function (req, res, next) {
+ db.getCommentsForUser(res.user.username).then(function (comments) {
+ res.comments = comments || [];
+ next();
+ });
},
- ensureFilesForUser: function (req, res, next){
- db.getFilesForUser(res.user.username).then(function(files){
- res.files = files || []
- next()
- })
+ ensureFilesForUser: function (req, res, next) {
+ db.getFilesForUser(res.user.username).then(function (files) {
+ res.files = files || [];
+ next();
+ });
},
- createKeyword: function (req, res, next){
- if (! req.body.keyword || ! req.body.keyword.length) {
- res.json({ error: "no keyword" })
- return
+ createKeyword: function (req, res, next) {
+ if (!req.body.keyword || !req.body.keyword.length) {
+ res.json({ error: "no keyword" });
+ return;
}
var data = {
keyword: req.body.keyword,
- owner: req.user.get('username'),
+ owner: req.user.get("username"),
createdate: util.now(),
public: 1,
- color: req.body.color || 'blue',
- }
- db.createKeyword(data).then(function(keyword){
- res.keyword = keyword
- next()
- })
+ color: req.body.color || "blue",
+ };
+ db.createKeyword(data).then(function (keyword) {
+ res.keyword = keyword;
+ next();
+ });
},
/* POSTING */
- verifyFilesOrComment: function (req, res, next){
- var hasComment = req.body.comment && req.body.comment.length
- var hasFile = req.files && req.files.length
- if (! hasComment && ! hasFile) {
- console.log(">>> no files or comment")
- return res.sendStatus(400)
+ verifyFilesOrComment: function (req, res, next) {
+ var hasComment = req.body.comment && req.body.comment.length;
+ var hasFile = req.files && req.files.length;
+ if (!hasComment && !hasFile) {
+ console.log(">>> no files or comment");
+ return res.sendStatus(400);
}
- next()
+ next();
},
/* COMMENTS */
- ensureComment: function (req, res, next){
- var id = req.params.id.replace(/\D/g, "")
- if (! id) {
- return res.sendStatus(404)
+ ensureComment: function (req, res, next) {
+ var id = req.params.id.replace(/\D/g, "");
+ if (!id) {
+ return res.sendStatus(404);
}
- db.getCommentById(id).then(function(comment){
+ db.getCommentById(id).then(function (comment) {
if (comment) {
- comment.set('comment', comment.get('comment').toString())
- res.comment = comment
- next()
+ comment.set("comment", comment.get("comment").toString());
+ res.comment = comment;
+ next();
+ } else {
+ res.sendStatus(404);
}
- else {
- res.sendStatus(404)
- }
- })
+ });
},
- createOptionalComment: function(req, res, next){
- if (! req.body.comment || ! req.body.comment.length) {
- return next()
+ createOptionalComment: function (req, res, next) {
+ if (!req.body.comment || !req.body.comment.length) {
+ return next();
}
- bucky.createComment(req, res, next)
+ bucky.createComment(req, res, next);
},
- createComment: function (req, res, next){
- if (! req.body.comment || ! req.body.comment.length) {
- res.json({ error: "no comment" })
- return
+ createComment: function (req, res, next) {
+ if (!req.body.comment || !req.body.comment.length) {
+ res.json({ error: "no comment" });
+ return;
}
var data = {
- thread: res.thread.get('id'),
+ thread: res.thread.get("id"),
parent_id: req.body.parent_id || -1,
- username: req.user.get('username'),
+ username: req.user.get("username"),
date: util.now(),
comment: req.body.comment,
- }
- db.createComment(data).then(function(comment){
- res.comment = comment
- next()
- })
+ };
+ db.createComment(data).then(function (comment) {
+ res.comment = comment;
+ next();
+ });
},
- updateComment: function(req, res, next){
- if (! req.body.comment || ! req.body.comment.length) {
- return res.sendStatus(500)
+ updateComment: function (req, res, next) {
+ if (!req.body.comment || !req.body.comment.length) {
+ return res.sendStatus(500);
}
- res.comment.set('comment', req.body.comment)
- res.comment.set('date', util.now())
- res.comment.save().then(() => {
- next()
- }).catch(err => {
- res.sendStatus(500)
- })
+ res.comment.set("comment", req.body.comment);
+ res.comment.set("date", util.now());
+ res.comment
+ .save()
+ .then(() => {
+ next();
+ })
+ .catch((err) => {
+ res.sendStatus(500);
+ });
},
- moveComment: function(req, res, next){
- res.comment.set('thread', res.thread.get('id'))
- res.comment.save().then(() => {
- next()
- }).catch(err => {
- res.sendStatus(500)
- })
+ moveComment: function (req, res, next) {
+ res.comment.set("thread", res.thread.get("id"));
+ res.comment
+ .save()
+ .then(() => {
+ next();
+ })
+ .catch((err) => {
+ res.sendStatus(500);
+ });
},
- destroyComment: function(req, res, next){
- res.comment.destroy().then(() => {
- next()
- }).catch(err => {
- res.sendStatus(500)
- })
+ destroyComment: function (req, res, next) {
+ res.comment
+ .destroy()
+ .then(() => {
+ next();
+ })
+ .catch((err) => {
+ res.sendStatus(500);
+ });
},
/* FILES */
- ensureFile: function (req, res, next){
- var id = req.params.id.replace(/\D/g, "")
- if (! id) {
- return res.sendStatus(404)
+ ensureFile: function (req, res, next) {
+ var id = req.params.id.replace(/\D/g, "");
+ if (!id) {
+ return res.sendStatus(404);
}
- db.getFileById(id).then(function(file){
+ db.getFileById(id).then(function (file) {
if (file) {
- res.file = file
- next()
+ res.file = file;
+ next();
+ } else {
+ res.sendStatus(404);
}
- else {
- res.sendStatus(404)
- }
- })
+ });
},
- createOptionalFiles: function(req, res, next){
- if (! req.files || ! req.files.length) {
- return next()
+ createOptionalFiles: function (req, res, next) {
+ if (!req.files || !req.files.length) {
+ return next();
}
- bucky.createFiles(req, res, next)
+ bucky.createFiles(req, res, next);
},
- createFiles: function (req, res, next){
- if (! req.files || ! req.files.length) {
- res.json({ error: "no files" })
- return
+ createFiles: function (req, res, next) {
+ if (!req.files || !req.files.length) {
+ res.json({ error: "no files" });
+ return;
}
- var thread_id = res.thread.get('id')
- var dirname = process.env.S3_PATH + '/data/' + thread_id + '/'
+ var thread_id = res.thread.get("id");
+ var dirname = process.env.S3_PATH + "/data/" + thread_id + "/";
var promises = req.files.map((file) => {
- return new Promise( (resolve, reject) => {
+ return new Promise((resolve, reject) => {
upload.put({
file: file,
preserveFilename: true,
dirname: dirname,
- unacceptable: function(err){
- reject(err)
+ unacceptable: function (err) {
+ reject(err);
},
- success: function(url){
- console.log("file >", url)
+ success: function (url) {
+ console.log("file >", url);
var data = {
- thread: res.thread.get('id'),
- username: req.user.get('username'),
+ thread: res.thread.get("id"),
+ username: req.user.get("username"),
filename: file.originalname,
date: util.now(),
size: file.size,
privacy: false,
storage: process.env.S3_BUCKET,
- }
- db.createFile(data).then(function(file){
- resolve(file)
- }).catch( (err) => reject(err) )
- }
- })
+ };
+ db.createFile(data)
+ .then(function (file) {
+ resolve(file);
+ })
+ .catch((err) => reject(err));
+ },
+ });
+ });
+ });
+ Promise.all(promises)
+ .then((values) => {
+ res.files = values;
+ next();
})
- })
- Promise.all(promises).then(values => {
- res.files = values
- next()
- }).catch(err => {
- console.log(err)
- })
+ .catch((err) => {
+ console.log(err);
+ });
},
- moveFile: function(req, res, next){
- db.moveFile(res.file, res.thread.get('id')).then(() => {
- next()
- }).catch(err => {
- res.sendStatus(500)
- })
+ moveFile: function (req, res, next) {
+ db.moveFile(res.file, res.thread.get("id"))
+ .then(() => {
+ next();
+ })
+ .catch((err) => {
+ res.sendStatus(500);
+ });
},
- destroyFile: function(req, res, next){
- var filePromises = db.destroyFiles([res.file])
- Promise.all(filePromises).then( () => next() )
- .catch(err => { console.error(err); next() })
+ destroyFile: function (req, res, next) {
+ var filePromises = db.destroyFiles([res.file]);
+ Promise.all(filePromises)
+ .then(() => next())
+ .catch((err) => {
+ console.error(err);
+ next();
+ });
},
-
/* PROFILE / USER */
- ensureUser: function (req, res, next){
- var username = util.sanitizeName(req.params.username)
- if (! username) {
- return res.sendStatus(404)
+ ensureUser: function (req, res, next) {
+ var username = util.sanitizeName(req.params.username);
+ if (!username) {
+ return res.sendStatus(404);
}
- db.getUserByUsername(username).then(function(user){
+ db.getUserByUsername(username).then(function (user) {
if (user) {
- res.user = user
- next()
- }
- else {
- res.sendStatus(404)
+ res.user = user;
+ next();
+ } else {
+ res.sendStatus(404);
}
- })
+ });
},
- ensureUserFromBody: function (req, res, next){
- var username = util.sanitizeName(req.body.username)
- if (! username) {
- return res.sendStatus(404)
+ ensureUserFromBody: function (req, res, next) {
+ var username = util.sanitizeName(req.body.username);
+ if (!username) {
+ return res.sendStatus(404);
}
- db.getUserByUsername(username).then(function(user){
+ db.getUserByUsername(username).then(function (user) {
if (user) {
- res.user = user
- next()
+ res.user = user;
+ next();
+ } else {
+ console.log("no such user!!");
+ res.sendStatus(404);
}
- else {
- console.log('no such user!!')
- res.sendStatus(404)
- }
- })
+ });
},
- ensureUserlist: function (req, res, next){
- db.getUsers().then(function(users){
- if (! users) {
- return res.sendStatus(404)
+ ensureUserlist: function (req, res, next) {
+ db.getUsers().then(function (users) {
+ if (!users) {
+ return res.sendStatus(404);
}
- res.users = users
- next()
- })
+ res.users = users;
+ next();
+ });
},
ensureUserThreadCounts: function (req, res, next) {
- db.getUserThreadCounts().then(function(counts){
+ db.getUserThreadCounts().then(function (counts) {
if (!counts) {
- return res.sendStatus(404)
+ return res.sendStatus(404);
}
- res.threadCounts = counts
- next()
- })
+ res.threadCounts = counts;
+ next();
+ });
},
ensureUserCommentCounts: function (req, res, next) {
- db.getUserCommentCounts().then(function(counts){
+ db.getUserCommentCounts().then(function (counts) {
if (!counts) {
- return res.sendStatus(404)
+ return res.sendStatus(404);
}
- res.commentCounts = counts
- next()
- })
+ res.commentCounts = counts;
+ next();
+ });
},
ensureUserFileCounts: function (req, res, next) {
- db.getUserFileCounts().then(function(counts){
+ db.getUserFileCounts().then(function (counts) {
if (!counts) {
- return res.sendStatus(404)
+ return res.sendStatus(404);
}
- res.fileCounts = counts
- next()
- })
+ res.fileCounts = counts;
+ next();
+ });
},
ensureUserStatistics: function (req, res, next) {
- var stats = {}
- res.threadCounts.forEach(function(user){
- stats[user.username] = stats[user.username] || {}
- stats[user.username].threads = user.count
- })
- res.commentCounts.forEach(function(user){
- stats[user.username] = stats[user.username] || {}
- stats[user.username].comments = user.count
- })
- res.fileCounts.forEach(function(user){
- stats[user.username] = stats[user.username] || {}
- stats[user.username].files = user.count
- stats[user.username].fileSize = user.size
- })
- res.userStats = stats
- next()
+ var stats = {};
+ res.threadCounts.forEach(function (user) {
+ stats[user.username] = stats[user.username] || {};
+ stats[user.username].threads = user.count;
+ });
+ res.commentCounts.forEach(function (user) {
+ stats[user.username] = stats[user.username] || {};
+ stats[user.username].comments = user.count;
+ });
+ res.fileCounts.forEach(function (user) {
+ stats[user.username] = stats[user.username] || {};
+ stats[user.username].files = user.count;
+ stats[user.username].fileSize = user.size;
+ });
+ res.userStats = stats;
+ next();
},
- sanitizeUser: function(req, res, next) {
- res.user = util.sanitizeUser(res.user)
- next()
+ sanitizeUser: function (req, res, next) {
+ res.user = util.sanitizeUser(res.user);
+ next();
},
- bumpLastSeen: function(req, res, next) {
- req.user.set('lastseen', util.now())
- req.user.save().then( () => next() )
+ bumpLastSeen: function (req, res, next) {
+ req.user.set("lastseen", util.now());
+ req.user.save().then(() => next());
},
- updateProfile: function(req, res, next) {
- var user = res.user
- "realname location email phone website twitter".split(" ").forEach( (field) => {
- res.user.set(field, req.body[field])
- })
- next()
+ updateProfile: function (req, res, next) {
+ var user = res.user;
+ "realname location email phone website twitter"
+ .split(" ")
+ .forEach((field) => {
+ res.user.set(field, req.body[field]);
+ });
+ next();
},
- uploadAvatar: function(req, res, next) {
- if (! req.file) return next()
- var dirname = '/bucky/profile/'
+ uploadAvatar: function (req, res, next) {
+ if (!req.file) return next();
+ var dirname = "/bucky/profile/";
upload.put({
file: req.file,
- filename: req.user.get('username') + '.jpg',
+ filename: req.user.get("username") + ".jpg",
dirname: dirname,
- unacceptable: function(err){
- res.sendStatus({ error: 'Problem uploading avatar.' })
+ unacceptable: function (err) {
+ res.sendStatus({ error: "Problem uploading avatar." });
},
- success: function(url){
- console.log("avatar >", url)
- res.user.set('avatar', url)
- next()
- }
- })
+ success: function (url) {
+ console.log("avatar >", url);
+ res.user.set("avatar", url);
+ next();
+ },
+ });
},
- saveUser: function(req, res, next){
- res.user.save().then( () => next() )
+ saveUser: function (req, res, next) {
+ res.user.save().then(() => next());
},
/* MAIL */
- ensureMailboxes: function (req, res, next){
- var username = req.user.get('username')
- var box = req.params.box
- var mbox = username + "." + box
- if (! box) {
- res.sendStatus(404)
+ ensureMailboxes: function (req, res, next) {
+ var username = req.user.get("username");
+ var box = req.params.box;
+ var mbox = username + "." + box;
+ if (!box) {
+ res.sendStatus(404);
}
- db.getMailboxes(username).then(function(boxes){
- if (! boxes) {
- return res.sendStatus(404)
+ db.getMailboxes(username).then(function (boxes) {
+ if (!boxes) {
+ return res.sendStatus(404);
}
- if (! boxes.models.some(function(box){ return box.get('mbox') == mbox })) {
- return res.sendStatus(404)
+ if (
+ !boxes.models.some(function (box) {
+ return box.get("mbox") == mbox;
+ })
+ ) {
+ return res.sendStatus(404);
}
- res.boxes = boxes
- next()
- })
+ res.boxes = boxes;
+ next();
+ });
},
- ensureMailboxCounts: function (req, res, next){
- db.getMailboxCounts(res.boxes.pluck("mbox")).then(function(counts){
- var lookup = {}
- counts.forEach(function(c){
- lookup[c.mbox] = c
- })
- res.boxes.forEach(function(box){
- var count = lookup[box.get('mbox')] ? lookup[box.get('mbox')].count : 0
- box.set("count", count)
- })
- next()
- })
+ ensureMailboxCounts: function (req, res, next) {
+ db.getMailboxCounts(res.boxes.pluck("mbox")).then(function (counts) {
+ var lookup = {};
+ counts.forEach(function (c) {
+ lookup[c.mbox] = c;
+ });
+ res.boxes.forEach(function (box) {
+ var count = lookup[box.get("mbox")] ? lookup[box.get("mbox")].count : 0;
+ box.set("count", count);
+ });
+ next();
+ });
},
- ensureMessages: function (req, res, next){
- const limit = parseInt(req.query.limit) || 50
- const offset = parseInt(req.query.offset) || 0
- db.getMessages(req.user.get('username'), req.params.box, limit, offset).then(function(messages){
- res.messages = messages
- res.query = { limit, offset }
- next()
- })
+ ensureMessages: function (req, res, next) {
+ const limit = parseInt(req.query.limit) || 50;
+ const offset = parseInt(req.query.offset) || 0;
+ db.getMessages(
+ req.user.get("username"),
+ req.params.box,
+ limit,
+ offset
+ ).then(function (messages) {
+ res.messages = messages;
+ res.query = { limit, offset };
+ next();
+ });
},
- ensureMessage: function(req, res, next){
- db.getMessage(req.params.id).then(function(message){
- if (! message) {
- return res.sendStatus(404)
+ ensureMessage: function (req, res, next) {
+ db.getMessage(req.params.id).then(function (message) {
+ if (!message) {
+ return res.sendStatus(404);
}
- var username = req.user.get('username')
- if (username !== message.get('recipient') && username !== message.get('sender')) {
- res.sendStatus(404)
- return
+ var username = req.user.get("username");
+ if (
+ username !== message.get("recipient") &&
+ username !== message.get("sender")
+ ) {
+ res.sendStatus(404);
+ return;
}
- res.message = message
- next()
- })
+ res.message = message;
+ next();
+ });
},
- checkMail: function(req, res, next){
- db.checkMail(req.user.get('username')).then(function(mail){
- res.mail = mail ? mail[0] : { count: 0 }
- next()
- })
+ checkMail: function (req, res, next) {
+ db.checkMail(req.user.get("username")).then(function (mail) {
+ res.mail = mail ? mail[0] : { count: 0 };
+ next();
+ });
},
- markMessageUnread: function(req, res, next){
- if (res.message.get('unread')) {
- res.message.set('unread', 0)
- res.message.save().then(() => next())
+ markMessageUnread: function (req, res, next) {
+ if (res.message.get("unread")) {
+ res.message.set("unread", 0);
+ res.message.save().then(() => next());
} else {
- next()
+ next();
}
},
- ensureRecipient: function(req, res, next){
- db.getUserByUsername(util.sanitizeName(req.body.username)).then( (user) => {
- if (! user) {
- res.send({ error: "No such recipient" })
- return
+ ensureRecipient: function (req, res, next) {
+ db.getUserByUsername(util.sanitizeName(req.body.username)).then((user) => {
+ if (!user) {
+ res.send({ error: "No such recipient" });
+ return;
}
- next()
- })
+ next();
+ });
},
- sendMessage: function(req, res, next){
- var recipient = util.sanitizeName(req.body.username)
- var sender = req.user.get('username')
- var subject = util.sanitize(req.body.subject)
- var body = util.sanitize(req.body.body)
- res.mail = { sender: sender, recipient: recipient }
+ sendMessage: function (req, res, next) {
+ var recipient = util.sanitizeName(req.body.username);
+ var sender = req.user.get("username");
+ var subject = util.sanitize(req.body.subject);
+ var body = util.sanitize(req.body.body);
+ res.mail = { sender: sender, recipient: recipient };
var recipientMessage = {
mbox: recipient + ".inbox",
unread: true,
@@ -757,7 +809,7 @@ var bucky = module.exports = {
date: util.now(),
subject: subject,
body: body,
- }
+ };
var senderMessage = {
mbox: sender + ".outbox",
unread: false,
@@ -766,23 +818,23 @@ var bucky = module.exports = {
date: util.now(),
subject: subject,
body: body,
- }
+ };
Promise.all([
db.createMessage(recipientMessage),
db.createMessage(senderMessage),
- ]).then( () => next() )
+ ]).then(() => next());
},
- deleteDraft: function(req, res, next){
- if (! req.body.draft_id) return next()
- db.getMessage(req.body.draft_id).then( (message) => {
- if (message.get('sender') === req.user.get('username')) {
- return message.destroy().then( () => next() )
+ deleteDraft: function (req, res, next) {
+ if (!req.body.draft_id) return next();
+ db.getMessage(req.body.draft_id).then((message) => {
+ if (message.get("sender") === req.user.get("username")) {
+ return message.destroy().then(() => next());
}
// erroneous draft message??
- next()
- })
+ next();
+ });
},
- destroyMessage: function(req, res, next) {
- res.message.destroy().then( () => next() )
+ destroyMessage: function (req, res, next) {
+ res.message.destroy().then(() => next());
},
-}
+});
diff --git a/bucky/app/pages.js b/bucky/app/pages.js
index 5d8551e..94ae46e 100644
--- a/bucky/app/pages.js
+++ b/bucky/app/pages.js
@@ -1,137 +1,145 @@
-var middleware = require('../util/middleware')
-var util = require('../util/util')
+var middleware = require("../util/middleware");
+var util = require("../util/util");
-var fortune = require('../db/fortune')
+var fortune = require("../db/fortune");
-module.exports = { route }
+module.exports = { route };
-function route (app){
- app.get("/",
+function route(app) {
+ app.get("/", middleware.ensureAuthenticated, function (req, res) {
+ res.redirect("/index");
+ });
+ app.get("/index", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/index", {
+ title: fortune("titles"),
+ hoot_text: fortune("hoots"),
+ });
+ });
+ app.get(
+ "/index/:keyword",
middleware.ensureAuthenticated,
- function(req, res){
- res.redirect('/index')
- })
- app.get("/index",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/index", {
- title: fortune("titles"),
- hoot_text: fortune("hoots"),
- })
- })
- app.get("/index/:keyword",
- middleware.ensureAuthenticated,
- function(req, res){
+ function (req, res) {
res.render("pages/index", {
title: fortune("titles"),
hoot_text: fortune("hoots"),
- })
- })
- app.get("/keywords",
+ });
+ }
+ );
+ app.get("/stream", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/stream", {
+ title: fortune("titles"),
+ hoot_text: fortune("hoots"),
+ });
+ });
+ app.get("/keywords", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/keywords", { title: "Bucky's keywords" });
+ });
+ app.get("/details/:id", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/details", {});
+ });
+ app.get(
+ "/details/:id/settings",
middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/keywords", {title: "Bucky's keywords"})
- })
- app.get("/details/:id",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/details", {})
- })
- app.get("/details/:id/settings",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/details", {})
- })
+ function (req, res) {
+ res.render("pages/details", {});
+ }
+ );
- app.get("/post/",
+ app.get("/post/", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/post", { title: "Start a new thread" });
+ });
+ app.get(
+ "/post/:keyword",
middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/post", {title: "Start a new thread"})
- })
- app.get("/post/:keyword",
+ function (req, res) {
+ res.render("pages/post", { title: "Start a new thread" });
+ }
+ );
+ app.get(
+ "/comment/:id/edit",
middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/post", {title: "Start a new thread"})
- })
- app.get("/comment/:id/edit", middleware.ensureAuthenticated, function(req, res){
- res.render("pages/comment_form", {title: "Edit comment"})
- })
+ function (req, res) {
+ res.render("pages/comment_form", { title: "Edit comment" });
+ }
+ );
- app.get("/profile",
+ app.get("/profile", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/profile", {
+ title: "profile for " + util.sanitize(req.user.get("username")),
+ });
+ });
+ app.get(
+ "/profile/:username",
middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/profile", {title: "profile for " + util.sanitize(req.user.get('username'))})
- })
- app.get("/profile/:username",
+ function (req, res) {
+ res.render("pages/profile", {
+ title: "profile for " + util.sanitize(req.params.username),
+ });
+ }
+ );
+ app.get(
+ "/profile/:username/edit",
middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/profile", {title: "profile for " + util.sanitize(req.params.username)})
- })
- app.get("/profile/:username/edit",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/profile_form", {title: "edit your profile"})
- })
+ function (req, res) {
+ res.render("pages/profile_form", { title: "edit your profile" });
+ }
+ );
- app.get("/users",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/users", {})
- })
- app.get("/users/all",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/users", {})
- })
+ app.get("/users", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/users", {});
+ });
+ app.get("/users/all", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/users", {});
+ });
- app.get("/search/",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/search", {title: "search" })
- })
+ app.get("/search/", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/search", { title: "search" });
+ });
- app.get("/mail/",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/mailbox", {title: "your inbox" })
- })
- app.get("/mail/compose",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/compose", {
- title: "new message",
- subject: fortune("subjects"),
- verb: "wrote",
- })
- })
- app.get("/mail/:box",
- middleware.ensureAuthenticated,
- function(req, res){
- res.render("pages/mailbox", { title: "your " + util.sanitize(req.params.box) })
- })
- app.get("/mail/compose/:username",
+ app.get("/mail/", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/mailbox", { title: "your inbox" });
+ });
+ app.get("/mail/compose", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/compose", {
+ title: "new message",
+ subject: fortune("subjects"),
+ verb: "wrote",
+ });
+ });
+ app.get("/mail/:box", middleware.ensureAuthenticated, function (req, res) {
+ res.render("pages/mailbox", {
+ title: "your " + util.sanitize(req.params.box),
+ });
+ });
+ app.get(
+ "/mail/compose/:username",
middleware.ensureAuthenticated,
- function(req, res){
+ function (req, res) {
res.render("pages/compose", {
title: "new message",
subject: fortune("subjects"),
verb: "wrote",
- })
- })
- app.get("/mail/read/:id",
+ });
+ }
+ );
+ app.get(
+ "/mail/read/:id",
middleware.ensureAuthenticated,
- function(req, res){
+ function (req, res) {
res.render("pages/message", {
- title: "read message"
- })
- })
- app.get("/mail/reply/:id",
+ title: "read message",
+ });
+ }
+ );
+ app.get(
+ "/mail/reply/:id",
middleware.ensureAuthenticated,
- function(req, res){
+ function (req, res) {
res.render("pages/compose", {
title: "reply to message",
subject: fortune("subjects"),
verb: fortune("mail-verbs"),
- })
- })
+ });
+ }
+ );
}
diff --git a/bucky/app/site.js b/bucky/app/site.js
index 69f0157..3627bac 100644
--- a/bucky/app/site.js
+++ b/bucky/app/site.js
@@ -42,7 +42,10 @@ site.init = function () {
key: "bucky.sid",
cookie: {
secure: process.env.NODE_ENV === "production",
- domain: "." + process.env.HOST_NAME,
+ domain:
+ process.env.HOST_NAME === "localhost"
+ ? process.env.HOST_NAME
+ : "." + process.env.HOST_NAME,
maxAge: 43200000000,
},
resave: true,