feat(Moderation): enhance moderation reporting and user feedback
All checks were successful
Deploy to production / deploy (push) Successful in 1m55s
All checks were successful
Deploy to production / deploy (push) Successful in 1m55s
- Added user blocking checks in authentication and reporting processes, returning appropriate error responses. - Expanded moderation report functionality to include new target types and optional fields for reports. - Implemented a new API endpoint to retrieve the count of open moderation reports. - Enhanced frontend components to allow users to report profiles, images, and guestbook entries, with corresponding UI updates. - Updated internationalization files to include new strings for reporting features in both German and English.
This commit is contained in:
@@ -3,12 +3,23 @@ import moderationService from '../services/moderationService.js';
|
||||
|
||||
const moderationController = {
|
||||
async createReport(req, res) {
|
||||
const allowedTargetTypes = [
|
||||
'forum_message',
|
||||
'gallery_image',
|
||||
'guestbook_entry',
|
||||
'one_to_one_message',
|
||||
'diary_entry',
|
||||
'user_profile',
|
||||
'blog',
|
||||
'blog_post'
|
||||
];
|
||||
const schema = Joi.object({
|
||||
targetType: Joi.string().valid('forum_message').required(),
|
||||
targetId: Joi.number().integer().min(1).required(),
|
||||
targetType: Joi.string().valid(...allowedTargetTypes).required(),
|
||||
targetId: Joi.number().integer().min(1).optional(),
|
||||
targetRef: Joi.string().trim().max(255).allow('').optional(),
|
||||
reason: Joi.string().trim().min(3).max(120).required(),
|
||||
details: Joi.string().allow('').max(2000).optional()
|
||||
});
|
||||
}).or('targetId', 'targetRef');
|
||||
const { error, value } = schema.validate(req.body || {});
|
||||
if (error) {
|
||||
return res.status(400).json({ error: error.details[0].message });
|
||||
@@ -51,6 +62,17 @@ const moderationController = {
|
||||
console.error('Error in updateReportStatus:', err);
|
||||
return res.status(400).json({ error: err.message });
|
||||
}
|
||||
},
|
||||
|
||||
async getOpenReportCount(req, res) {
|
||||
try {
|
||||
const { userid: userId } = req.headers;
|
||||
const result = await moderationService.getOpenReportCount(userId);
|
||||
return res.status(200).json(result);
|
||||
} catch (err) {
|
||||
console.error('Error in getOpenReportCount:', err);
|
||||
return res.status(400).json({ error: err.message });
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user