Untitled
user_3179742
plain_text
02/09/2026 5:02 AM
7.8 KB
13
Indexable
import express from 'express';
import authRoutes from '../../features/auth/auth.routes.js';
import cartRoutes from '../../features/cart/cart.routes.js';
import productsRoutes from '../../features/products/products.routes.js';
import categoriesRoutes from '../../features/products/categories.routes.js';
import reviewsRoutes from '../../features/reviews/reviews.routes.js';
import stockRoutes from '../../features/inventory/stock.routes.js';
import ordersRoutes from '../../features/orders/orders.routes.js';
import reportsRoutes from '../../features/analytics/reports.routes.js';
import dashboardRoutes from '../../features/dashboard/dashboard.routes.js';
import analyticsRoutes from '../../features/analytics/analytics.routes.js';
import auditRoutes from '../../features/audit/audit.routes.js';
import webhookRoutes from '../../features/payments/webhook.routes.js';
import paymentRoutes from '../../features/payments/payment.routes.js';
import webAuthRoutes from '../../features/auth/auth.web.routes.js';
import userRoutes from '../../features/users/user.routes.js';
import chatRoutes from '../../features/chat/chat.routes.js';
import addressRoutes from '../../features/address/address.routes.js';
import privacySettingsRoutes from '../../features/privacySettings/routes/privacySettings.routes.js';
const router = express.Router();
// Webhook raw body parsing
router.use('/webhooks', webhookRoutes);
// Feature routes under /v1
router.use('/auth', authRoutes);
router.use('/cart', cartRoutes);
router.use('/product', productsRoutes);
router.use('/categories', categoriesRoutes);
router.use('/reviews', reviewsRoutes);
router.use('/stock', stockRoutes);
router.use('/orders', ordersRoutes);
router.use('/reports', reportsRoutes);
router.use('/dashboard', dashboardRoutes);
router.use('/analytics', analyticsRoutes);
router.use('/audit', auditRoutes);
router.use('/payments', paymentRoutes);
router.use('/auth/web', webAuthRoutes);
router.use('/user', userRoutes);
router.use('/chat', chatRoutes);
router.use('/addresses', addressRoutes);
router.use('/user', privacySettingsRoutes);
export default router;
import express from 'express';
import { auth } from '../../shared/middleware/auth.js';
import {
getPrivacySettings,
updatePrivacySettings,
<<<<<<< HEAD:zian-inventory-system/b/src/features/privacySettings/routes/privacySettings.routes.js
exportUserData
} from "../controllers/privacySettings.controller.js";
=======
exportUserData,
deleteAccount
} from "./privacySettings.controller.js";
>>>>>>> 10191f93a893688438514c98890d1427c0de9723:zian-inventory-system/b/src/features/privacySettings/privacySettings.routes.js
const router = express.Router();
router.get('/privacy-settings', auth(), getPrivacySettings);
router.put('/privacy-settings', auth(), updatePrivacySettings);
router.post('/export-data', auth(), exportUserData);
export default router;
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