User Privacy Settings Controller Function
This is a JavaScript controller function using Express and Mongoose to fetch or initialize default privacy settings for a user based on their unique ID.user_3179742
javascript
02/09/2026 3:23 AM
4.0 KB
16
Indexable
import PrivacySettings from "./PrivacySettings.js";
import User from '../users/User.js';
// Get user's privacy settings
export const getPrivacySettings = async (req, res) => {
try {
console.log('Fetching privacy settings for user:', req.user.id);
let settings = await PrivacySettings.findOne({ userId: req.user.id });
// If no settings exist, create default ones
if (!settings) {
console.log('No settings found, creating default for user:', req.user.id);
settings = await PrivacySettings.create({
userId: req.user.id,
profileVisibility: 'public',
emailVisibility: 'private',
phoneVisibility: 'private',
activityStatus: true,
dataSharing: false,
personalizedAds: false
});
}
console.log('Successfully retrieved settings for user:', req.user.id);
res.json(settings);
} catch (error) {
console.error('Get privacy settings error:', error);
res.status(500).json({
error: 'Failed to fetch privacy settings',
details: error.message
});
}
};
// Update privacy settings
export const updatePrivacySettings = async (req, res) => {
try {
const {
profileVisibility,
emailVisibility,
phoneVisibility,
activityStatus,
dataSharing,
personalizedAds
} = req.body;
const settings = await PrivacySettings.findOneAndUpdate(
{ userId: req.user.id },
{
profileVisibility,
emailVisibility,
phoneVisibility,
activityStatus,
dataSharing,
personalizedAds
},
{ new: true, upsert: true }
);
res.json(settings);
} catch (error) {
console.error('Update privacy settings error:', error);
res.status(500).json({ error: 'Failed to update privacy settings' });
}
};
// Export user data
export const exportUserData = async (req, res) => {
try {
const user = await User.findById(req.user.id).select('-password');
const privacySettings = await PrivacySettings.findOne({ userId: req.user.id });
const userData = {
user: user.toObject(),
privacySettings: privacySettings ? privacySettings.toObject() : null,
exportedAt: new Date().toISOString()
};
res.json({
message: 'Data export completed successfully',
data: userData
});
} catch (error) {
console.error('Export data error:', error);
res.status(500).json({ error: 'Failed to export data' });
}
};
// Delete user account
export const deleteAccount = async (req, res) => {
try {
const userId = req.user.id;
await PrivacySettings.deleteOne({ userId });
await User.findByIdAndDelete(userId);
// TODO: Delete other related data (posts, comments, etc.)
res.json({ message: 'Account deleted successfully' });
} catch (error) {
console.error('Delete account error:', error);
res.status(500).json({ error: 'Failed to delete account' });
}
};
Editor is loading...
Leave a Comment