/var/www/qr4y.com/server/delivery/api/controllers
Edit: /var/www/qr4y.com/server/delivery/api/controllers/permission.controller.js (2590B)
const logger = require('../../logger')({ service: 'api' })
const checkPermission = require('../utils/checkPermission.util')
const { NotFound, BadRequest } = require('../responseModels/errors')
module.exports = function ({ db }) {
this.List = async (req, res, next) => {
logger.child({ path: req.path, request: req.query }).info()
try {
checkPermission(req, 'permissions_list')
const permissions = await db.permission.findAll()
if (!permissions || permissions.length == 0) {
throw new NotFound({ lang: req.user.languageCode })
}
return res.status(200).json(permissions)
} catch (err) {
next(err)
}
}
this.Details = async (req, res, next) => {
logger.child({ path: req.path, request: req.params }).info()
try {
checkPermission(req, 'permissions_list')
const { id } = req.params
const permission = await db.permission.findOne({
include: { model: db.Permission, through: { attributes: [] } },
where: { id: id }
})
if (!permission) {
throw new NotFound({ lang: req.user.languageCode })
}
return res.status(200).json(permission)
} catch (err) {
next(err)
}
}
this.Create = async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
try {
checkPermission(req, 'permissions_edit')
const { title, key, image } = req.body
const permission = await db.permission.create({ title, key, image })
return res.status(200).json({
status: 'success',
id: permission.id
})
} catch (err) {
next(err)
}
}
this.Edit = async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
try {
checkPermission(req, 'permissions_edit')
const { id, title, key, image } = req.body
let permission = await db.permission.findOne({
where: { id: id }
})
if (!permission) {
throw new NotFound({ lang: req.user.languageCode })
}
permission.title = title
permission.key = key
permission.image = image
await permission.save()
return res.status(200).json(permission)
} catch (err) {
next(err)
}
}
this.Delete = async (req, res, next) => {
logger.child({ path: req.path, request: req.body }).info()
try {
checkPermission(req, 'permissions_edit')
const { id } = req.body
const permission = await db.permission.findOne({
where: { id: id }
})
if (!permission) {
throw new NotFound({ lang: req.user.languageCode })
}
await db.permission.destroy({ where: { id: id } })
return res.status(200).json({ status: 'success', id: permission.id })
} catch (err) {
next(err)
}
}
}