mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-15 22:05:57 +00:00
Added in middleware for retriving brews by a user
This commit is contained in:
@@ -88,12 +88,21 @@ const MetadataEditor = React.createClass({
|
|||||||
</div>
|
</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(){
|
render : function(){
|
||||||
console.log(this.props.metadata);
|
|
||||||
|
|
||||||
|
|
||||||
return <div className='metadataEditor'>
|
return <div className='metadataEditor'>
|
||||||
|
|
||||||
<div className='field title'>
|
<div className='field title'>
|
||||||
<label>title</label>
|
<label>title</label>
|
||||||
<input type='text' className='value'
|
<input type='text' className='value'
|
||||||
@@ -120,6 +129,8 @@ const MetadataEditor = React.createClass({
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{this.renderAuthors()}
|
||||||
|
|
||||||
<div className='field publish'>
|
<div className='field publish'>
|
||||||
<label>publish</label>
|
<label>publish</label>
|
||||||
<div className='value'>
|
<div className='value'>
|
||||||
|
|||||||
@@ -67,4 +67,8 @@
|
|||||||
.button(@red);
|
.button(@red);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.authors.field .value{
|
||||||
|
font-size: 0.8em;
|
||||||
|
line-height : 1.5em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
33
server.js
33
server.js
@@ -22,15 +22,16 @@ require('mongoose')
|
|||||||
|
|
||||||
|
|
||||||
//Account MIddleware
|
//Account MIddleware
|
||||||
router.use((req, res, next) => {
|
app.use((req, res, next) => {
|
||||||
if(req.cookies && req.cookies.nc_session){
|
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();
|
return next();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.use(require('./server/homebrew.api.js'));
|
app.use(require('./server/homebrew.api.js'));
|
||||||
app.use(require('./server/admin.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');
|
const changelogText = require('fs').readFileSync('./changelog.md', 'utf8');
|
||||||
|
|
||||||
|
|
||||||
var sanitizeBrew = function(brew){
|
|
||||||
var cleanBrew = _.assign({}, brew);
|
|
||||||
delete cleanBrew.editId;
|
|
||||||
return cleanBrew;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Source page
|
//Source page
|
||||||
String.prototype.replaceAll = function(s,r){return this.split(s).join(r)}
|
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)=>{
|
app.get('/edit/:id', (req, res, next)=>{
|
||||||
HomebrewModel.get({editId : req.params.id})
|
HomebrewModel.get({editId : req.params.id})
|
||||||
.then((brew)=>{
|
.then((brew)=>{
|
||||||
@@ -109,6 +117,8 @@ app.get('/print/:id', (req, res, next)=>{
|
|||||||
|
|
||||||
//Render Page
|
//Render Page
|
||||||
app.use((req, res) => {
|
app.use((req, res) => {
|
||||||
|
|
||||||
|
console.log('user', req.account);
|
||||||
vitreumRender({
|
vitreumRender({
|
||||||
page: './build/homebrew/bundle.dot',
|
page: './build/homebrew/bundle.dot',
|
||||||
globals:{
|
globals:{
|
||||||
@@ -119,7 +129,8 @@ app.use((req, res) => {
|
|||||||
url: req.originalUrl,
|
url: req.originalUrl,
|
||||||
welcomeText : welcomeText,
|
welcomeText : welcomeText,
|
||||||
changelog : changelogText,
|
changelog : changelogText,
|
||||||
brew : req.brew
|
brew : req.brew,
|
||||||
|
brews : req.brews
|
||||||
},
|
},
|
||||||
clearRequireCache : !process.env.PRODUCTION,
|
clearRequireCache : !process.env.PRODUCTION,
|
||||||
}, (err, page) => {
|
}, (err, page) => {
|
||||||
|
|||||||
@@ -16,8 +16,6 @@ refreshCount();
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const getTopBrews = (cb)=>{
|
const getTopBrews = (cb)=>{
|
||||||
HomebrewModel.find().sort({views: -1}).limit(5).exec(function(err, brews) {
|
HomebrewModel.find().sort({views: -1}).limit(5).exec(function(err, brews) {
|
||||||
cb(brews);
|
cb(brews);
|
||||||
@@ -39,7 +37,10 @@ const getGoodBrewTitle = (text) => {
|
|||||||
|
|
||||||
|
|
||||||
router.post('/api', (req, res)=>{
|
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){
|
if(!newHomebrew.title){
|
||||||
newHomebrew.title = getGoodBrewTitle(newHomebrew.text);
|
newHomebrew.title = getGoodBrewTitle(newHomebrew.text);
|
||||||
}
|
}
|
||||||
@@ -57,6 +58,7 @@ router.put('/api/update/:id', (req, res)=>{
|
|||||||
.then((brew)=>{
|
.then((brew)=>{
|
||||||
brew = _.merge(brew, req.body);
|
brew = _.merge(brew, req.body);
|
||||||
brew.updatedAt = new Date();
|
brew.updatedAt = new Date();
|
||||||
|
brew.authors = _.uniq(_.concat(brew.authors, req.account.username));
|
||||||
brew.save((err, obj)=>{
|
brew.save((err, obj)=>{
|
||||||
if(err) throw err;
|
if(err) throw err;
|
||||||
return res.status(200).send(obj);
|
return res.status(200).send(obj);
|
||||||
|
|||||||
@@ -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);
|
var Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user