Reflex/backend/routes/userRoutes.js

49 lines
2.7 KiB
JavaScript
Raw Normal View History

2025-05-21 22:13:09 +07:00
const express = require('express');
const router = express.Router();
const { updateUserProfile, getUsersForSwiping, uploadUserProfilePhoto, setMainPhoto, deletePhoto, getUserById } = require('../controllers/userController');
2025-05-21 22:13:09 +07:00
const { protect } = require('../middleware/authMiddleware'); // Нам нужен protect для защиты маршрута
const multer = require('multer'); // 1. Импортируем multer
const path = require('path'); // Может понадобиться для фильтрации файлов
// Настройка multer для загрузки фотографий
const storage = multer.memoryStorage(); // Хранить файл в памяти, а не на диске
// Конфигурация multer с проверкой типа файла
const upload = multer({
storage: storage,
fileFilter: (req, file, cb) => {
// Проверяем, является ли файл изображением
const filetypes = /jpeg|jpg|png|webp/;
const mimetype = filetypes.test(file.mimetype);
const extname = filetypes.test(path.extname(file.originalname).toLowerCase());
if (mimetype && extname) {
return cb(null, true);
} else {
// cb(new Error('Допустимы только изображения (jpg, jpeg, png, webp)!'), false);
const err = new Error('Разрешены только изображения (jpg, jpeg, png, webp)!'); // Изменено сообщение об ошибке
err.statusCode = 400; // Устанавливаем statusCode для multer ошибок
cb(err, false);
}
},
limits: {
fileSize: 5 * 1024 * 1024, // Ограничение размера файла (5 МБ)
},
});
// Маршрут для обновления профиля текущего аутентифицированного пользователя
// PUT /api/users/profile
router.put('/profile', protect, updateUserProfile);
router.get('/suggestions', protect, getUsersForSwiping); // <--- НОВЫЙ МАРШРУТ
// Маршрут для загрузки фотографии профиля
// POST /api/users/profile/photo
router.post('/profile/photo', protect, upload.single('profilePhoto'), uploadUserProfilePhoto);
2025-05-21 23:43:24 +07:00
router.put('/profile/photo/:photoId/set-main', protect, setMainPhoto); // <--- НОВЫЙ МАРШРУТ
router.delete('/profile/photo/:photoId', protect, deletePhoto); // <--- НОВЫЙ МАРШРУТ
2025-05-21 22:13:09 +07:00
// Маршрут для получения профиля по ID (например, для просмотра чужих профилей, если это нужно)
// GET /api/users/:id
router.get('/:userId', protect, getUserById); // <--- НОВЫЙ МАРШРУТ
2025-05-21 22:13:09 +07:00
module.exports = router;