feedback tab
This commit is contained in:
66
backend/routes/feedback.js
Normal file
66
backend/routes/feedback.js
Normal file
@@ -0,0 +1,66 @@
|
||||
const express = require('express');
|
||||
const { Feedback, User } = require('../models');
|
||||
const { authenticateToken } = require('../middleware/auth');
|
||||
const { validateFeedback, sanitizeInput } = require('../middleware/validation');
|
||||
const logger = require('../utils/logger');
|
||||
const emailService = require('../services/emailService');
|
||||
const router = express.Router();
|
||||
|
||||
// Submit new feedback
|
||||
router.post('/', authenticateToken, sanitizeInput, validateFeedback, async (req, res) => {
|
||||
try {
|
||||
const { feedbackText, url } = req.body;
|
||||
|
||||
// Capture user agent from request headers
|
||||
const userAgent = req.headers['user-agent'];
|
||||
|
||||
const feedback = await Feedback.create({
|
||||
userId: req.user.id,
|
||||
feedbackText,
|
||||
url: url || null,
|
||||
userAgent: userAgent || null
|
||||
});
|
||||
|
||||
const reqLogger = logger.withRequestId(req.id);
|
||||
reqLogger.info("Feedback submitted", {
|
||||
userId: req.user.id,
|
||||
feedbackId: feedback.id
|
||||
});
|
||||
|
||||
// Send confirmation email to user
|
||||
try {
|
||||
await emailService.sendFeedbackConfirmation(req.user, feedback);
|
||||
} catch (emailError) {
|
||||
reqLogger.error("Failed to send feedback confirmation email", {
|
||||
error: emailError.message,
|
||||
userId: req.user.id,
|
||||
feedbackId: feedback.id
|
||||
});
|
||||
// Don't fail the request if email fails
|
||||
}
|
||||
|
||||
// Send notification email to admin
|
||||
try {
|
||||
await emailService.sendFeedbackNotificationToAdmin(req.user, feedback);
|
||||
} catch (emailError) {
|
||||
reqLogger.error("Failed to send feedback notification to admin", {
|
||||
error: emailError.message,
|
||||
userId: req.user.id,
|
||||
feedbackId: feedback.id
|
||||
});
|
||||
// Don't fail the request if email fails
|
||||
}
|
||||
|
||||
res.status(201).json(feedback);
|
||||
} catch (error) {
|
||||
const reqLogger = logger.withRequestId(req.id);
|
||||
reqLogger.error("Feedback submission failed", {
|
||||
error: error.message,
|
||||
stack: error.stack,
|
||||
userId: req.user.id
|
||||
});
|
||||
res.status(500).json({ error: error.message });
|
||||
}
|
||||
});
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user