67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
const { Page } = require('../models/models')
|
|
|
|
const log = require('../../log')
|
|
|
|
const pageController = {
|
|
async getAll (req, res) {
|
|
const pages = await Page.findAll({ raw: true })
|
|
return res.json(pages)
|
|
},
|
|
|
|
async get (req, res) {
|
|
const slug = req.params.page_slug
|
|
const allowed = req?.user?.is_admin || req?.user?.is_editor
|
|
|
|
try {
|
|
const page = await Page.findOne({ where: { slug, ...( !allowed && { visible: true }) }})
|
|
return res.json(page)
|
|
} catch (e) {
|
|
log.error('Get page failed:', String(e))
|
|
return res.sendStatus(404)
|
|
}
|
|
},
|
|
|
|
async add (req, res) {
|
|
const pageDetail = {
|
|
title: req.body.title,
|
|
content: req.body.content,
|
|
visible: true
|
|
}
|
|
log.info('Create page: ' + req.body.title)
|
|
const page = await Page.create(pageDetail)
|
|
res.json(page)
|
|
},
|
|
|
|
async update (req, res) {
|
|
const pageDetails = {
|
|
title: req.body.title,
|
|
content: req.body.content,
|
|
visible: req.body.visible
|
|
}
|
|
const page_id = req.params.page_id
|
|
try {
|
|
let page = await Page.findByPk(page_id)
|
|
page = await page.update(pageDetails)
|
|
res.json(page)
|
|
} catch (e) {
|
|
log.error('Toggle page failed', e)
|
|
res.sendStatus(404)
|
|
}
|
|
},
|
|
|
|
async remove (req, res) {
|
|
log.info('Remove page ', req.params.page_id)
|
|
const page_id = req.params.page_id
|
|
try {
|
|
const page = await Page.findByPk(page_id)
|
|
await page.destroy()
|
|
res.sendStatus(200)
|
|
} catch (e) {
|
|
log.error('Remove page failed:', e)
|
|
res.sendStatus(404)
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
module.exports = pageController |