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:
@@ -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'>
|
||||
|
||||
@@ -67,4 +67,8 @@
|
||||
.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
|
||||
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) => {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user