Add delete for pages, active scope to model
This commit is contained in:
@@ -155,6 +155,112 @@ class Page extends Controller {
|
||||
// Make sure the new nodes are created
|
||||
// Make sure the order is correct
|
||||
}
|
||||
|
||||
async create_top_level(req, res) {
|
||||
if ( !req.body.name ) {
|
||||
return res.status(400).message('Missing required field: name').api({})
|
||||
}
|
||||
|
||||
const root_page = await req.user.get_root_page()
|
||||
|
||||
const new_page = new PageModel({
|
||||
Name: req.body.name,
|
||||
OrgUserId: req.user._id,
|
||||
ParentId: root_page.UUID,
|
||||
CreatedUserId: req.user.id,
|
||||
UpdateUserId: req.user.id
|
||||
})
|
||||
|
||||
await new_page.save()
|
||||
|
||||
root_page.ChildPageIds.push(new_page.UUID)
|
||||
await root_page.save()
|
||||
|
||||
req.user.allow(`page:${new_page.UUID}`)
|
||||
await req.user.save()
|
||||
|
||||
const starter_node = new Node({
|
||||
Type: 'paragraph',
|
||||
Value: {
|
||||
Value: 'Click to edit...',
|
||||
},
|
||||
PageId: new_page.UUID,
|
||||
CreatedUserId: req.user.id,
|
||||
UpdateUserId: req.user.id
|
||||
})
|
||||
|
||||
await starter_node.save()
|
||||
new_page.NodeIds.push(starter_node.UUID)
|
||||
await new_page.save()
|
||||
|
||||
return res.api(new_page)
|
||||
}
|
||||
|
||||
async create_child(req, res) {
|
||||
if ( !req.body.name ) {
|
||||
return res.status(400).message('Missing required field: name').api({})
|
||||
}
|
||||
|
||||
if ( !req.body.parentId ) {
|
||||
return res.status(400).message('Missing required field: parentId').api({})
|
||||
}
|
||||
|
||||
// Get the parent
|
||||
const parent = await PageModel.findOne({UUID: req.body.parentId})
|
||||
if ( !parent ) {
|
||||
return res.status(404).message('Unable to find parent with that ID.').api({})
|
||||
} else if ( !parent.accessible_by(req.user, 'update') ) {
|
||||
return res.security.deny()
|
||||
}
|
||||
|
||||
const new_page = new PageModel({
|
||||
Name: req.body.name,
|
||||
OrgUserId: req.user._id,
|
||||
ParentId: parent.UUID,
|
||||
CreatedUserId: req.user.id,
|
||||
UpdateUserId: req.user.id,
|
||||
})
|
||||
|
||||
await new_page.save()
|
||||
|
||||
parent.ChildPageIds.push(new_page.UUID)
|
||||
await parent.save()
|
||||
|
||||
req.user.allow(`page:${new_page.UUID}`)
|
||||
await req.user.save()
|
||||
|
||||
const starter_node = new Node({
|
||||
Type: 'paragraph',
|
||||
Value: {
|
||||
Value: 'Click to edit...',
|
||||
},
|
||||
PageId: new_page.UUID,
|
||||
CreatedUserId: req.user.id,
|
||||
UpdateUserId: req.user.id
|
||||
})
|
||||
|
||||
await starter_node.save()
|
||||
new_page.NodeIds.push(starter_node.UUID)
|
||||
await new_page.save()
|
||||
|
||||
return res.api(new_page)
|
||||
}
|
||||
|
||||
async delete_page(req, res) {
|
||||
const PageId = req.params.PageId
|
||||
|
||||
let page;
|
||||
if ( PageId ) {
|
||||
page = await PageModel.findOne({UUID: PageId})
|
||||
if ( !page ) return res.status(404).message('Page not found with that ID.').api({})
|
||||
if ( !page.accessible_by(req.user, 'update') ) return req.security.deny()
|
||||
}
|
||||
|
||||
page.Active = false
|
||||
page.DeletedAt = new Date
|
||||
await page.save()
|
||||
return res.api({})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = exports = Page
|
||||
|
||||
Reference in New Issue
Block a user