1
0
mirror of https://github.com/stolksdorf/homebrewery.git synced 2025-12-12 23:45:57 +00:00

Added in middleware for retriving brews by a user

This commit is contained in:
Scott Tolksdorf
2016-11-23 23:41:39 -05:00
parent 1db24d07bd
commit 750f5c1330
5 changed files with 62 additions and 18 deletions

View File

@@ -88,12 +88,21 @@ const MetadataEditor = React.createClass({
</div>
},
renderAuthors : function(){
let text = 'None.';
if(this.props.metadata.authors.length){
text = this.props.metadata.authors.join(', ');
}
return <div className='field authors'>
<label>authors</label>
<div className='value'>
{text}
</div>
</div>
},
render : function(){
console.log(this.props.metadata);
return <div className='metadataEditor'>
<div className='field title'>
<label>title</label>
<input type='text' className='value'
@@ -120,6 +129,8 @@ const MetadataEditor = React.createClass({
</div>
</div>
{this.renderAuthors()}
<div className='field publish'>
<label>publish</label>
<div className='value'>

View File

@@ -67,4 +67,8 @@
.button(@red);
}
}
.authors.field .value{
font-size: 0.8em;
line-height : 1.5em;
}
}

View File

@@ -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) => {

View File

@@ -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);

View File

@@ -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);