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

This commit is contained in:
2025-05-22 12:12:24 +03:00
parent 3d3f24d4c9
commit 5e231e547d
12 changed files with 1488 additions and 5509 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
{"code":"42703","file":"parse_relation.c","hint":"Perhaps you meant to reference the column \"user_identities.created_at\".","length":183,"level":"error","line":"3729","message":"[IdentityService] Error finding wallet identity for user 1: column \"updated_at\" does not exist","name":"error","position":"43","routine":"errorMissingColumn","severity":"ERROR","stack":"error: column \"updated_at\" does not exist\n at /app/node_modules/pg-pool/index.js:45:11\n at process.processTicksAndRejections (node:internal/process/task_queues:95:5)\n at async IdentityService.findIdentity (/app/services/identity-service.js:258:22)\n at async /app/routes/auth.js:368:32","timestamp":"2025-05-22T09:09:22.928Z"}

View File

@@ -107,4 +107,21 @@ router.get('/token-balances', requireAuth, async (req, res) => {
}
});
// Удаление идентификатора пользователя
router.delete('/:provider/:providerId', requireAuth, async (req, res) => {
try {
const userId = req.session.userId;
const { provider, providerId } = req.params;
const result = await require('../services/identity-service').deleteIdentity(userId, provider, providerId);
if (result.success) {
res.json({ success: true, deleted: result.deleted });
} else {
res.status(400).json({ success: false, error: result.error });
}
} catch (error) {
logger.error('Error deleting identity:', error);
res.status(500).json({ error: 'Internal server error' });
}
});
module.exports = router;

View File

@@ -495,6 +495,32 @@ class IdentityService {
return [];
}
}
/**
* Удаляет идентификатор пользователя
* @param {number} userId - ID пользователя
* @param {string} provider - Тип идентификатора
* @param {string} providerId - Значение идентификатора
* @returns {Promise<object>} - Результат операции
*/
async deleteIdentity(userId, provider, providerId) {
try {
if (!userId || !provider || !providerId) {
logger.warn(`[IdentityService] Missing parameters for deleteIdentity: userId=${userId}, provider=${provider}, providerId=${providerId}`);
return { success: false, error: 'Missing required parameters' };
}
const { provider: normalizedProvider, providerId: normalizedProviderId } = this.normalizeIdentity(provider, providerId);
const result = await db.query(
`DELETE FROM user_identities WHERE user_id = $1 AND provider = $2 AND provider_id = $3`,
[userId, normalizedProvider, normalizedProviderId]
);
logger.info(`[IdentityService] Deleted identity ${normalizedProvider}:${normalizedProviderId} for user ${userId}`);
return { success: true, deleted: result.rowCount };
} catch (error) {
logger.error(`[IdentityService] Error deleting identity ${provider}:${providerId} for user ${userId}:`, error);
return { success: false, error: error.message };
}
}
}
module.exports = new IdentityService();