Files
DLE/backend/routes/users.js

123 lines
4.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const express = require('express');
const router = express.Router();
const db = require('../db');
const logger = require('../utils/logger');
const { requireAuth } = require('../middleware/auth');
// const userService = require('../services/userService');
// Получение списка пользователей
router.get('/', (req, res) => {
res.json({ message: 'Users API endpoint' });
});
// Получение информации о пользователе
router.get('/:address', (req, res) => {
const { address } = req.params;
res.json({
address,
message: 'User details endpoint',
});
});
// Маршрут для обновления языка пользователя
router.post('/update-language', requireAuth, async (req, res) => {
try {
const { language } = req.body;
const userId = req.session.userId;
// Проверка валидности языка
const validLanguages = ['ru', 'en'];
if (!validLanguages.includes(language)) {
return res.status(400).json({ error: 'Неподдерживаемый язык' });
}
// Обновление языка в базе данных
await db.query('UPDATE users SET preferred_language = $1 WHERE id = $2', [language, userId]);
res.json({ success: true });
} catch (error) {
logger.error('Error updating language:', error);
res.status(500).json({ error: 'Внутренняя ошибка сервера' });
}
});
// Маршрут для обновления имени и фамилии пользователя
router.post('/update-profile', requireAuth, async (req, res) => {
try {
const { firstName, lastName } = req.body;
const userId = req.session.userId;
// Проверка валидности данных
if (firstName && firstName.length > 255) {
return res.status(400).json({ error: 'Имя слишком длинное (максимум 255 символов)' });
}
if (lastName && lastName.length > 255) {
return res.status(400).json({ error: 'Фамилия слишком длинная (максимум 255 символов)' });
}
// Обновление имени и фамилии в базе данных
await db.query('UPDATE users SET first_name = $1, last_name = $2 WHERE id = $3', [
firstName || null,
lastName || null,
userId,
]);
res.json({ success: true });
} catch (error) {
logger.error('Error updating user profile:', error);
res.status(500).json({ error: 'Внутренняя ошибка сервера' });
}
});
// Получить профиль текущего пользователя
/*
router.get('/profile', requireAuth, async (req, res) => {
try {
const userId = req.session.userId;
const user = await userService.getUserProfile(userId);
if (!user) {
return res.status(404).json({ success: false, message: 'User not found' });
}
res.json({ success: true, user });
} catch (error) {
console.error('Error getting user profile:', error);
res.status(500).json({ success: false, message: 'Internal server error' });
}
});
*/
// Обновить профиль текущего пользователя
/*
router.put('/profile', requireAuth, async (req, res) => {
try {
const userId = req.session.userId;
const profileData = req.body;
const updatedUser = await userService.updateUserProfile(userId, profileData);
res.json({ success: true, user: updatedUser, message: 'Profile updated successfully' });
} catch (error) {
console.error('Error updating user profile:', error);
// Можно добавить более специфичную обработку ошибок, например, если данные невалидны
res.status(500).json({ success: false, message: 'Internal server error' });
}
});
*/
// GET /api/users - Получить список всех пользователей (пример, может требовать прав администратора)
// В текущей реализации этот маршрут не используется и закомментирован
/*
router.get('/', async (req, res) => {
try {
// const users = await userService.getAllUsers(); // Удаляем
await userService.getAllUsers(); // Просто вызываем, если нужно действие, но результат не используется
// res.json({ success: true, users });
res.json({ success: true, message: "Users retrieved" }); // Пример ответа без данных
} catch (error) {
console.error('Error getting all users:', error);
res.status(500).json({ success: false, message: 'Internal server error' });
}
});
*/
module.exports = router;