You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.7 KiB
96 lines
2.7 KiB
'use strict'; |
|
const router = require('express').Router(); |
|
const AV = require('leanengine'); |
|
const mail = require('../utilities/send-mail'); |
|
const spam = require('../utilities/check-spam'); |
|
|
|
const Comment = AV.Object.extend('Comment'); |
|
|
|
// Comment 列表 |
|
router.get('/', function (req, res, next) { |
|
if (req.currentUser) { |
|
let query = new AV.Query(Comment); |
|
query.descending('createdAt'); |
|
query.limit(50); |
|
query.find().then(function (results) { |
|
res.render('comments', { |
|
title: process.env.SITE_NAME + '上的评论', |
|
comment_list: results |
|
}); |
|
}, function (err) { |
|
if (err.code === 101) { |
|
res.render('comments', { |
|
title: process.env.SITE_NAME + '上的评论', |
|
comment_list: [] |
|
}); |
|
} else { |
|
next(err); |
|
} |
|
}).catch(next); |
|
} else { |
|
res.redirect('/'); |
|
} |
|
}); |
|
|
|
router.get('/resend-email', function (req, res, next) { |
|
if (req.currentUser) { |
|
let query = new AV.Query(Comment); |
|
query.get(req.query.id).then(function (object) { |
|
query.get(object.get('rid')).then(function (parent) { |
|
mail.send(object, parent); |
|
res.redirect('/comments') |
|
}, function (err) { |
|
} |
|
).catch(next); |
|
}, function (err) { |
|
}).catch(next); |
|
} else { |
|
res.redirect('/'); |
|
} |
|
}); |
|
|
|
router.get('/delete', function (req, res, next) { |
|
if (req.currentUser) { |
|
let query = new AV.Query(Comment); |
|
query.get(req.query.id).then(function (object) { |
|
object.destroy(); |
|
res.redirect('/comments') |
|
}, function (err) { |
|
}).catch(next); |
|
} else { |
|
res.redirect('/'); |
|
} |
|
}); |
|
|
|
router.get('/not-spam', function (req, res, next) { |
|
if (req.currentUser) { |
|
let query = new AV.Query(Comment); |
|
query.get(req.query.id).then(function (object) { |
|
object.set('isSpam', false); |
|
object.set('ACL', {"*":{"read":true}} ); |
|
object.save(); |
|
spam.submitHam(object); |
|
res.redirect('/comments') |
|
}, function (err) { |
|
}).catch(next); |
|
} else { |
|
res.redirect('/'); |
|
} |
|
}); |
|
router.get('/mark-spam', function (req, res, next) { |
|
if (req.currentUser) { |
|
let query = new AV.Query(Comment); |
|
query.get(req.query.id).then(function (object) { |
|
object.set('isSpam', true); |
|
object.set('ACL', {"*":{"read":false}} ); |
|
object.save(); |
|
spam.submitSpam(object); |
|
res.redirect('/comments') |
|
}, function (err) { |
|
}).catch(next); |
|
} else { |
|
res.redirect('/'); |
|
} |
|
}); |
|
|
|
module.exports = router;
|
|
|