Files
yourpart3/backend/controllers/forumController.js
Torsten Schulz (local) 19ee6ba0a1 Add password reset localization and chat configuration
- Implemented German and English localization for password reset functionality.
- Added WebSocket URL resolution logic in chat services to support various environments and configurations.
- Created centralized chat configuration for event keys and payload mappings.
- Developed RoomsView component for admin chat room management, including create, edit, and delete functionalities.
2025-08-18 07:44:56 +02:00

112 lines
4.0 KiB
JavaScript

import forumService from '../services/forumService.js';
import Joi from 'joi';
const forumController = {
async createForum(req, res) {
const schema = Joi.object({
name: Joi.string().min(1).max(255).required(),
permissions: Joi.array().items(Joi.string().min(1).max(255)).required()
});
const { error, value } = schema.validate(req.body);
if (error) {
return res.status(400).json({ error: error.details[0].message });
}
try {
const { userid: userId } = req.headers;
const forum = await forumService.createForum(userId, value.name, value.permissions);
res.status(201).json(forum);
} catch (error) {
console.error('Error in createForum:', error);
res.status(400).json({ error: error.message });
}
},
async deleteForum(req, res) {
try {
const { userid: userId } = req.headers;
const { forumId } = req.params;
await forumService.deleteForum(userId, forumId);
res.status(200).json({ message: 'Forum deleted successfully' });
} catch (error) {
console.error('Error in deleteForum:', error);
res.status(400).json({ error: error.message });
}
},
async getAllForums(req, res) {
try {
const { userid: userId } = req.headers;
const forums = await forumService.getAllForums(userId);
res.status(200).json(forums);
} catch (error) {
console.error('Error in getAllForums:', error);
res.status(400).json({ error: error.message });
}
},
async getForum(req, res) {
try {
const { userid: userId } = req.headers;
const { forumId, page } = req.params;
const forum = await forumService.getForum(userId, forumId, page);
res.status(200).json(forum);
} catch (error) {
console.error('Error in getForum:', error);
res.status(400).json({ error: error.message });
}
},
async createTopic(req, res) {
const schema = Joi.object({
forumId: Joi.number().integer().required(),
title: Joi.string().min(1).max(255).required(),
content: Joi.string().min(1).max(5000).required()
});
const { error, value } = schema.validate(req.body);
if (error) {
return res.status(400).json({ error: error.details[0].message });
}
try {
const { userid: userId } = req.headers;
const result = await forumService.createTopic(userId, value.forumId, value.title, value.content);
res.status(201).json(result);
} catch (error) {
console.error('Error in createTopic:', error);
res.status(400).json({ error: error.message });
}
},
async getTopic(req, res) {
try {
const { userid: userId } = req.headers;
const { id: topicId } = req.params;
const topic = await forumService.getTopic(userId, topicId);
res.status(200).json(topic);
} catch (error) {
console.error('Error in getTopic:', error);
res.status(400).json({ error: error.message });
}
},
async addMessage(req, res) {
const schema = Joi.object({
content: Joi.string().min(1).max(5000).required()
});
const { error, value } = schema.validate(req.body);
if (error) {
return res.status(400).json({ error: error.details[0].message });
}
try {
const { userid: userId } = req.headers;
const { id: topicId } = req.params;
const result = await forumService.addMessage(userId, topicId, value.content);
res.status(201).json(result);
} catch (error) {
console.error('Error in addMessage:', error);
res.status(400).json({ error: error.message });
}
}
};
export default forumController;