1
0
Fork 0
mirror of synced 2024-09-27 23:01:51 +12:00
budibase/packages/worker/src/api/routes/admin/configs.js

82 lines
2.3 KiB
JavaScript
Raw Normal View History

2021-04-21 05:14:36 +12:00
const Router = require("@koa/router")
const controller = require("../../controllers/admin/configs")
const joiValidator = require("../../../middleware/joi-validator")
const Joi = require("joi")
const { Configs } = require("../../../constants")
const router = Router()
function smtpValidation() {
2021-04-24 01:58:06 +12:00
// prettier-ignore
return Joi.object({
port: Joi.number().required(),
host: Joi.string().required(),
2021-04-24 01:58:06 +12:00
from: Joi.string().email().required(),
secure: Joi.boolean().optional(),
selfSigned: Joi.boolean().optional(),
auth: Joi.object({
type: Joi.string().valid("login", "oauth2", null),
user: Joi.string().required(),
pass: Joi.string().valid("", null),
}).optional(),
}).unknown(true)
}
function settingValidation() {
2021-04-24 01:58:06 +12:00
// prettier-ignore
return Joi.object({
2021-04-24 05:54:12 +12:00
platformUrl: Joi.string().valid("", null),
logoUrl: Joi.string().valid("", null),
docsUrl: Joi.string().valid("", null),
company: Joi.string().required(),
}).unknown(true)
}
function googleValidation() {
2021-04-24 01:58:06 +12:00
// prettier-ignore
return Joi.object({
clientID: Joi.string().required(),
clientSecret: Joi.string().required(),
callbackURL: Joi.string().required(),
}).unknown(true)
}
2021-04-21 05:14:36 +12:00
function buildConfigSaveValidation() {
// prettier-ignore
return joiValidator.body(Joi.object({
2021-05-05 04:31:06 +12:00
_id: Joi.string(),
_rev: Joi.string(),
group: Joi.string(),
2021-04-21 23:12:22 +12:00
type: Joi.string().valid(...Object.values(Configs)).required(),
config: Joi.alternatives()
.conditional("type", {
switch: [
{ is: Configs.SMTP, then: smtpValidation() },
{ is: Configs.SETTINGS, then: settingValidation() },
{ is: Configs.ACCOUNT, then: Joi.object().unknown(true) },
{ is: Configs.GOOGLE, then: googleValidation() }
],
}),
}).required(),
)
2021-04-21 05:14:36 +12:00
}
function buildConfigGetValidation() {
// prettier-ignore
return joiValidator.params(Joi.object({
type: Joi.string().valid(...Object.values(Configs)).required()
}).unknown(true).required())
}
2021-04-21 05:14:36 +12:00
router
2021-04-22 08:08:04 +12:00
.post("/api/admin/configs", buildConfigSaveValidation(), controller.save)
.delete("/api/admin/configs/:id", controller.destroy)
2021-05-06 03:00:15 +12:00
.get(
"/api/admin/configs/all/:type",
buildConfigGetValidation(),
controller.fetch
)
.get("/api/admin/configs/:type", buildConfigGetValidation(), controller.find)
2021-04-21 05:14:36 +12:00
module.exports = router