Add model logic & api endpoint for reverting page versions
This commit is contained in:
@@ -12,6 +12,38 @@ class Page extends Controller {
|
||||
return [...super.services, 'models']
|
||||
}
|
||||
|
||||
async revert_version(req, res, next) {
|
||||
const PageId = req.params.PageId
|
||||
const user = req.user
|
||||
|
||||
let page = await PageModel.findOne({UUID: PageId})
|
||||
if ( !page ) return res.status(404).message('Page not found with that ID.').api({})
|
||||
|
||||
if ( !(await page.is_accessible_by(user)) ) return req.security.deny()
|
||||
const level = await page.access_level_for(req.user)
|
||||
|
||||
if ( !req.body.version_num ) {
|
||||
return res.status(400)
|
||||
.message('Missing required field: version_num')
|
||||
.api()
|
||||
}
|
||||
|
||||
if ( !page.has_version(req.body.version_num) ) {
|
||||
return res.status(400)
|
||||
.message('Invalid version_num')
|
||||
.api()
|
||||
}
|
||||
|
||||
const reverted_page = await page.revert_to_version(req.body.version_num, req.user.id)
|
||||
await reverted_page.save()
|
||||
|
||||
const data = reverted_page.toJSON()
|
||||
delete data.version_archive
|
||||
data.level = level
|
||||
data._id = reverted_page.id
|
||||
return res.api(data)
|
||||
}
|
||||
|
||||
async get_page_versions(req, res, next) {
|
||||
const User = this.models.get('auth:User')
|
||||
const PageId = req.params.PageId
|
||||
|
||||
Reference in New Issue
Block a user