Add model logic & api endpoint for reverting page versions
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing

This commit is contained in:
2020-11-06 12:42:52 -06:00
parent 5f5b750172
commit 37f9c09fe2
5 changed files with 96 additions and 1 deletions

View File

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