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