bulk setting change and image update

This commit is contained in:
Julian Krauser 2025-04-29 13:19:12 +02:00
parent 964af82904
commit be52a51055
3 changed files with 64 additions and 2 deletions

View file

@ -1,6 +1,6 @@
import { Request, Response } from "express";
import SettingHelper from "../../../helpers/settingsHelper";
import { SettingString } from "../../../type/settingTypes";
import { SettingString, SettingValueMapping } from "../../../type/settingTypes";
/**
* @description get All settings
@ -45,6 +45,44 @@ export async function setSetting(req: Request, res: Response): Promise<any> {
res.sendStatus(204);
}
/**
* @description set settings
* @param req {Request} Express req object
* @param res {Response} Express res object
* @returns {Promise<*>}
*/
export async function setSettings<K extends SettingString>(req: Request, res: Response): Promise<any> {
let setting = req.body as Array<{ key: K; value: SettingValueMapping[K] }>;
for (let entry of setting) {
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<any> {
if (req.files && !Array.isArray(req.files) && req.files.icon) {
await SettingHelper.setSetting("club.icon", "configured");
} else {
await SettingHelper.resetSetting("club.icon");
}
if (req.files && !Array.isArray(req.files) && req.files.logo) {
await SettingHelper.setSetting("club.logo", "configured");
} else {
await SettingHelper.resetSetting("club.logo");
}
res.sendStatus(204);
}
/**
* @description reset setting
* @param req {Request} Express req object

View file

@ -68,11 +68,15 @@ export default abstract class SettingHelper {
/**
* Sets a setting
* undefined value leads to reset of key
* @param key The key of the setting
* @param value The value to set
*/
public static async setSetting<K extends SettingString>(key: K, value: SettingValueMapping[K]): Promise<void> {
if (value === undefined || value === null) return;
if (value === undefined || value === null) {
if (key != "mail.password") this.resetSetting(key);
return;
}
const stringValue = String(value);

View file

@ -4,8 +4,11 @@ import {
getSetting,
getSettings,
resetSetting,
setImages,
setSetting,
setSettings,
} from "../../../controller/admin/management/settingController";
import { clubImageUpload } from "../../../middleware/multer";
var router = express.Router({ mergeParams: true });
@ -25,6 +28,23 @@ router.put(
}
);
router.put(
"/multi",
PermissionHelper.passCheckMiddleware("create", "management", "setting"),
async (req: Request, res: Response) => {
await setSettings(req, res);
}
);
router.put(
"/images",
PermissionHelper.passCheckMiddleware("create", "management", "setting"),
clubImageUpload,
async (req: Request, res: Response) => {
await setImages(req, res);
}
);
router.delete(
"/:setting",
PermissionHelper.passCheckMiddleware("delete", "management", "setting"),