File size: 2,126 Bytes
1dc8372 5db933c 1dc8372 5db933c 3ad0250 1dc8372 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
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
});
});
|