import { Request, Response } from "express"; import SettingHelper from "../../../helpers/settingsHelper"; import { SettingString, SettingValueMapping } from "../../../type/settingTypes"; import MailHelper from "../../../helpers/mailHelper"; import InternalException from "../../../exceptions/internalException"; /** * @description get All settings * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getSettings(req: Request, res: Response): Promise { res.json({ ...SettingHelper.getAllSettings(), ["mail.password"]: undefined }); } /** * @description get setting * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getSetting(req: Request, res: Response): Promise { let setting = req.params.setting as SettingString; let value = SettingHelper.getSetting(setting); if (setting == "mail.password") { value = undefined; } res.send(value); } /** * @description set setting * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function setSetting(req: Request, res: Response): Promise { let setting = req.body.setting as SettingString; let value = req.body.value as string; await SettingHelper.checkMail([{ key: setting, value }]).catch((err) => { if (err == "mail") { throw new InternalException("Mail is not valid"); } else { throw new InternalException("Config is not valid"); } }); await SettingHelper.setSetting(setting, value); res.sendStatus(204); } /** * @description set settings * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function setSettings(req: Request, res: Response): Promise { let setting = req.body as Array<{ key: K; value: SettingValueMapping[K] }>; await SettingHelper.checkMail(setting).catch((err) => { if (err == "mail") { throw new InternalException("Mail is not valid"); } else { throw new InternalException("Config is not valid"); } }); for (let entry of setting) { await SettingHelper.setSetting(entry.key, entry.value); } res.sendStatus(204); } /** * @description set setting * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function setImages(req: Request, res: Response): Promise { if (req.files && !Array.isArray(req.files) && req.files.icon) { await SettingHelper.setSetting("club.icon", "configured"); } else if (req.body["club.icon"] != "keep") { await SettingHelper.resetSetting("club.icon"); } if (req.files && !Array.isArray(req.files) && req.files.logo) { await SettingHelper.setSetting("club.logo", "configured"); } else if (req.body["club.logo"] != "keep") { await SettingHelper.resetSetting("club.logo"); } res.sendStatus(204); } /** * @description reset setting * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function resetSetting(req: Request, res: Response): Promise { let setting = req.params.setting as SettingString; await SettingHelper.resetSetting(setting); res.sendStatus(204); }