Untitled

user_3179742 avatar
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