zhlajiex's picture
Production Fix: Resolve fs ReferenceError in Multer, fix profile auth failure, and optimize controller lookups
5db933c
const User = require('../models/User');
const ErrorResponse = require('../utils/errorResponse');
const asyncHandler = require('../utils/asyncHandler');
// @desc Update user preferences (Mainframe Sync Fix)
// @route PUT /api/users/preferences
// @access Private
exports.updatePreferences = asyncHandler(async (req, res, next) => {
const {
theme, preferredModel, temperature, techStack,
cotMode, reasoningBudget, selfCritique, multiAgentMode,
confidenceLevel, hallucinationGuard, debugMode
} = req.body;
const user = req.user;
// Ensure preferences object exists
if (!user.preferences) user.preferences = {};
// Standard Sync
if (theme) user.preferences.theme = theme;
if (preferredModel) user.preferences.preferredModel = preferredModel;
if (temperature !== undefined) user.preferences.temperature = temperature;
if (techStack) user.preferences.techStack = techStack;
// Advanced Cognitive Sync
if (cotMode) user.preferences.cotMode = cotMode;
if (reasoningBudget !== undefined) user.preferences.reasoningBudget = reasoningBudget;
if (selfCritique !== undefined) user.preferences.selfCritique = selfCritique;
if (multiAgentMode) user.preferences.multiAgentMode = multiAgentMode;
if (confidenceLevel) user.preferences.confidenceLevel = confidenceLevel;
if (hallucinationGuard) user.preferences.hallucinationGuard = hallucinationGuard;
if (debugMode !== undefined) user.preferences.debugMode = debugMode;
// Save to Cloud (MongoDB Atlas)
await user.save();
res.status(200).json({
success: true,
data: user.preferences
});
});
// @desc Get user profile
// @route GET /api/users/profile
// @access Private
exports.getProfile = asyncHandler(async (req, res, next) => {
const user = req.user;
const profile = {
name: user.name,
role: user.role,
isOwner: user.role === 'owner' || user.email === 'johanvoncd7@gmail.com',
preferences: user.preferences,
usage: {
requestsToday: user.usage.requestsToday,
limit: 75
}
};
res.status(200).json({
success: true,
data: profile
});
});