diff --git a/server/boot/story.js b/server/boot/story.js index d46b79f079..c1f188db81 100755 --- a/server/boot/story.js +++ b/server/boot/story.js @@ -12,13 +12,18 @@ var Rx = require('rx'), validator = require('validator'), secrets = require('../../config/secrets'); -var foundationDate = 1413298800000; -var time48Hours = 172800000; +import { + ifNoUser401, + ifNoUserRedirectTo +} from '../utils/middleware'; -var unDasherize = utils.unDasherize; -var dasherize = utils.dasherize; -var getURLTitle = utils.getURLTitle; -var ifNoUser401 = require('../utils/middleware').ifNoUser401; +const foundationDate = 1413298800000; +const time48Hours = 172800000; + +const unDasherize = utils.unDasherize; +const dasherize = utils.dasherize; +const getURLTitle = utils.getURLTitle; +const sendNonUserToNews = ifNoUserRedirectTo('/news'); function hotRank(timeValue, rank) { /* @@ -62,8 +67,16 @@ module.exports = function(app) { router.get('/news/hot', hotJSON); router.get('/stories/hotStories', hotJSON); - router.get('/stories/submit', submitNew); - router.get('/stories/submit/new-story', preSubmit); + router.get( + '/stories/submit', + sendNonUserToNews, + submitNew + ); + router.get( + '/stories/submit/new-story', + sendNonUserToNews, + preSubmit + ); router.post('/stories/preliminary', ifNoUser401, newStory); router.post('/stories/', ifNoUser401, storySubmission); router.get('/news/', hot); @@ -102,17 +115,25 @@ module.exports = function(app) { } function submitNew(req, res) { + if (!req.user.isGithubCool) { + req.flash('errors', { + msg: 'You must link GitHub with your account before you can post' + + ' on Camper News.' + }); + return res.redirect('/news'); + } + return res.render('stories/index', { title: 'Submit a new story to Camper News', page: 'submit' }); } - function preSubmit(req, res, next) { + function preSubmit(req, res) { var data = req.query; if (typeof data.url !== 'string') { req.flash('errors', { msg: 'No URL supplied with story' }); - return next(new TypeError('No URL supplied with story')); + return res.redirect('/news'); } var cleanedData = cleanData(data.url); @@ -264,8 +285,11 @@ module.exports = function(app) { } function newStory(req, res, next) { - if (!req.user) { - return next(new Error('Must be logged in')); + if (!req.user.isGithubCool) { + req.flash('errors', { + msg: 'You must authenticate with Github to post to Camper News' + }); + return res.redirect('/news'); } var url = req.body.data.url; diff --git a/server/views/stories/hot-stories.jade b/server/views/stories/hot-stories.jade index 8cc7bb7659..9d512f8a8b 100644 --- a/server/views/stories/hot-stories.jade +++ b/server/views/stories/hot-stories.jade @@ -69,7 +69,7 @@ (typeof username !== 'undefined' ? "" : "upvote") + - " · " + + "   " + rank + (rank > 1 ? " points" : " point") + " · posted " + moment(data[i].timePosted).fromNow() + " by @" + data[i].author.username + " " +