ваше сообщение коммита

This commit is contained in:
2025-04-21 18:03:43 +03:00
parent 9482443e2d
commit d47bba1d1b
39 changed files with 7814 additions and 1425 deletions

View File

@@ -23,19 +23,16 @@ 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]
);
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);
@@ -48,22 +45,23 @@ 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]
);
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);
@@ -75,29 +73,29 @@ router.post('/update-profile', requireAuth, async (req, res) => {
router.get('/profile/current', requireAuth, async (req, res) => {
try {
const userId = req.session.userId;
// Получение данных пользователя
const userResult = await db.query(
'SELECT id, username, first_name, last_name, role, status, created_at, preferred_language FROM users WHERE id = $1',
[userId]
);
if (userResult.rows.length === 0) {
return res.status(404).json({ error: 'Пользователь не найден' });
}
// Получение идентификаторов пользователя
const identitiesResult = await db.query(
'SELECT provider, provider_id FROM user_identities WHERE user_id = $1',
[userId]
);
const user = userResult.rows[0];
const identities = identitiesResult.rows.reduce((acc, identity) => {
acc[identity.provider] = identity.provider_id;
return acc;
}, {});
res.json({
id: user.id,
username: user.username,
@@ -107,7 +105,7 @@ router.get('/profile/current', requireAuth, async (req, res) => {
status: user.status,
createdAt: user.created_at,
preferredLanguage: user.preferred_language,
identities
identities,
});
} catch (error) {
logger.error('Error getting user profile:', error);