diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.jsx b/client/homebrew/editor/metadataEditor/metadataEditor.jsx index 15a9554..1a9fd42 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.jsx +++ b/client/homebrew/editor/metadataEditor/metadataEditor.jsx @@ -88,12 +88,21 @@ const MetadataEditor = React.createClass({ }, + renderAuthors : function(){ + let text = 'None.'; + if(this.props.metadata.authors.length){ + text = this.props.metadata.authors.join(', '); + } + return
+ +
+ {text} +
+
+ }, + render : function(){ - console.log(this.props.metadata); - - return
-
+ {this.renderAuthors()} +
diff --git a/client/homebrew/editor/metadataEditor/metadataEditor.less b/client/homebrew/editor/metadataEditor/metadataEditor.less index 5768c9a..89683e0 100644 --- a/client/homebrew/editor/metadataEditor/metadataEditor.less +++ b/client/homebrew/editor/metadataEditor/metadataEditor.less @@ -67,4 +67,8 @@ .button(@red); } } + .authors.field .value{ + font-size: 0.8em; + line-height : 1.5em; + } } \ No newline at end of file diff --git a/server.js b/server.js index 0b447dd..f34df04 100644 --- a/server.js +++ b/server.js @@ -22,15 +22,16 @@ require('mongoose') //Account MIddleware -router.use((req, res, next) => { +app.use((req, res, next) => { if(req.cookies && req.cookies.nc_session){ - req.user = jwt.decode(req.cookies.nc_session, config.get('secret')); + try{ + req.account = jwt.decode(req.cookies.nc_session, config.get('secret')); + }catch(e){} } return next(); }); - app.use(require('./server/homebrew.api.js')); app.use(require('./server/admin.api.js')); @@ -40,13 +41,6 @@ const welcomeText = require('fs').readFileSync('./client/homebrew/pages/homePage const changelogText = require('fs').readFileSync('./changelog.md', 'utf8'); -var sanitizeBrew = function(brew){ - var cleanBrew = _.assign({}, brew); - delete cleanBrew.editId; - return cleanBrew; -}; - - //Source page String.prototype.replaceAll = function(s,r){return this.split(s).join(r)} @@ -63,6 +57,20 @@ app.get('/source/:id', (req, res)=>{ }); +app.get('/user/:username', (req, res, next) => { + const fullAccess = req.account && (req.account.username == req.params.username); + HomebrewModel.getByUser(req.params.username, fullAccess) + .then((brews) => { + req.brews = brews; + return next(); + //return res.json(brews) + }) + .catch((err) => { + console.log(err); + }) +}) + + app.get('/edit/:id', (req, res, next)=>{ HomebrewModel.get({editId : req.params.id}) .then((brew)=>{ @@ -109,6 +117,8 @@ app.get('/print/:id', (req, res, next)=>{ //Render Page app.use((req, res) => { + + console.log('user', req.account); vitreumRender({ page: './build/homebrew/bundle.dot', globals:{ @@ -119,7 +129,8 @@ app.use((req, res) => { url: req.originalUrl, welcomeText : welcomeText, changelog : changelogText, - brew : req.brew + brew : req.brew, + brews : req.brews }, clearRequireCache : !process.env.PRODUCTION, }, (err, page) => { diff --git a/server/homebrew.api.js b/server/homebrew.api.js index 9322327..934cb22 100644 --- a/server/homebrew.api.js +++ b/server/homebrew.api.js @@ -16,8 +16,6 @@ refreshCount(); - - const getTopBrews = (cb)=>{ HomebrewModel.find().sort({views: -1}).limit(5).exec(function(err, brews) { cb(brews); @@ -39,7 +37,10 @@ const getGoodBrewTitle = (text) => { router.post('/api', (req, res)=>{ - const newHomebrew = new HomebrewModel(req.body); + const newHomebrew = new HomebrewModel(_.merge({}, + req.body, + {authors : [req.account.username]} + )); if(!newHomebrew.title){ newHomebrew.title = getGoodBrewTitle(newHomebrew.text); } @@ -57,6 +58,7 @@ router.put('/api/update/:id', (req, res)=>{ .then((brew)=>{ brew = _.merge(brew, req.body); brew.updatedAt = new Date(); + brew.authors = _.uniq(_.concat(brew.authors, req.account.username)); brew.save((err, obj)=>{ if(err) throw err; return res.status(200).send(obj); diff --git a/server/homebrew.model.js b/server/homebrew.model.js index 8b9ec79..b730738 100644 --- a/server/homebrew.model.js +++ b/server/homebrew.model.js @@ -55,6 +55,22 @@ HomebrewSchema.statics.get = function(query){ }); }; +HomebrewSchema.statics.getByUser = function(username, allowAccess=false){ + return new Promise((resolve, reject) => { + let query = {authors : username, published : true}; + if(allowAccess){ + delete query.published; + } + Homebrew.find(query, (err, brews)=>{ + if(err) return reject('Can not find brew'); + return resolve(_.map(brews, (brew)=>{ + return brew.sanatize(!allowAccess); + })); + }); + }); +}; + + var Homebrew = mongoose.model('Homebrew', HomebrewSchema);