74 lines
2.4 KiB
JavaScript
74 lines
2.4 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { linkIdentity, getUserIdentities } = require('../utils/identity-linker');
|
|
const { Pool } = require('pg');
|
|
|
|
// Подключение к БД
|
|
const pool = new Pool({
|
|
connectionString: process.env.DATABASE_URL,
|
|
ssl: process.env.NODE_ENV === 'production' ? { rejectUnauthorized: false } : false,
|
|
});
|
|
|
|
// Middleware для проверки аутентификации
|
|
function requireAuth(req, res, next) {
|
|
if (!req.session || (!req.session.isAuthenticated && !req.session.authenticated)) {
|
|
return res.status(401).json({ error: 'Unauthorized' });
|
|
}
|
|
next();
|
|
}
|
|
|
|
// Получение связанных идентификаторов пользователя
|
|
router.get('/', requireAuth, async (req, res) => {
|
|
try {
|
|
// Получаем ID пользователя по Ethereum-адресу
|
|
const result = await pool.query('SELECT id FROM users WHERE address = $1', [
|
|
req.session.address,
|
|
]);
|
|
|
|
if (result.rows.length === 0) {
|
|
return res.status(404).json({ error: 'User not found' });
|
|
}
|
|
|
|
const userId = result.rows[0].id;
|
|
|
|
// Получаем все идентификаторы пользователя
|
|
const identities = await getUserIdentities(userId);
|
|
|
|
res.json({ identities });
|
|
} catch (error) {
|
|
console.error('Error getting user identities:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
// Удаление связанного идентификатора
|
|
router.delete('/:type/:value', requireAuth, async (req, res) => {
|
|
try {
|
|
const { type, value } = req.params;
|
|
|
|
// Получаем ID пользователя по Ethereum-адресу
|
|
const result = await pool.query('SELECT id FROM users WHERE address = $1', [
|
|
req.session.address,
|
|
]);
|
|
|
|
if (result.rows.length === 0) {
|
|
return res.status(404).json({ error: 'User not found' });
|
|
}
|
|
|
|
const userId = result.rows[0].id;
|
|
|
|
// Удаляем идентификатор
|
|
await pool.query(
|
|
'DELETE FROM user_identities WHERE user_id = $1 AND identity_type = $2 AND identity_value = $3',
|
|
[userId, type, value]
|
|
);
|
|
|
|
res.json({ success: true });
|
|
} catch (error) {
|
|
console.error('Error deleting user identity:', error);
|
|
res.status(500).json({ error: 'Internal server error' });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|