forked from UKSOURCE/cms.hailearning.edu.vn
feat: standardize admin form limits and guidance
This commit is contained in:
@@ -2,10 +2,33 @@ const { addBaseUrlToImages } = require("../utils/imageHelper");
|
||||
const AboutUs = require("../models/aboutUs");
|
||||
const Blog = require("../models/blog");
|
||||
const jsonHelper = require("../utils/jsonHelper");
|
||||
const {
|
||||
validateLengthRules,
|
||||
summarizeLengthErrors,
|
||||
} = require("../utils/lengthValidation");
|
||||
const {
|
||||
ABOUT_US_LENGTH_RULES,
|
||||
} = require("../constants/contentLengthRules");
|
||||
const writeAuditLog = require("../audit/writeAuditLog");
|
||||
const diffObject = require("../audit/diffObject");
|
||||
const AUDIT_ACTIONS = require("../constants/auditAction");
|
||||
|
||||
const handleLengthValidation = (validation, req, res, options = {}) => {
|
||||
const message =
|
||||
summarizeLengthErrors(validation, 3) || "One or more fields exceed the allowed length.";
|
||||
|
||||
if (options.json) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
error: message,
|
||||
errors: validation.errors,
|
||||
});
|
||||
}
|
||||
|
||||
req.flash("error_msg", message);
|
||||
return res.redirect(options.redirectTo || "/admin/about-us");
|
||||
};
|
||||
|
||||
/**
|
||||
* GET /api/about
|
||||
* Lấy dữ liệu About Us (Public API cho website và CMS load dữ liệu)
|
||||
@@ -110,6 +133,11 @@ exports.updateAbout = async (req, res) => {
|
||||
// ✅ Capture BEFORE state
|
||||
const beforeData = JSON.parse(JSON.stringify(doc.toObject()));
|
||||
|
||||
const validation = validateLengthRules(updateData, ABOUT_US_LENGTH_RULES);
|
||||
if (!validation.valid) {
|
||||
return handleLengthValidation(validation, req, res, { json: true });
|
||||
}
|
||||
|
||||
// Use .set() for better handling of nested objects/arrays in Mongoose
|
||||
doc.set(updateData);
|
||||
await doc.save();
|
||||
@@ -210,6 +238,13 @@ exports.update = async (req, res) => {
|
||||
// ✅ Capture BEFORE state
|
||||
const beforeData = JSON.parse(JSON.stringify(doc.toObject()));
|
||||
|
||||
const validation = validateLengthRules(updateData, ABOUT_US_LENGTH_RULES);
|
||||
if (!validation.valid) {
|
||||
return handleLengthValidation(validation, req, res, {
|
||||
redirectTo: `/admin/about-us?activeTab=${req.query.activeTab || "hero"}`,
|
||||
});
|
||||
}
|
||||
|
||||
doc.set(updateData);
|
||||
await doc.save();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user