diff --git a/backend/middleware/auth.js b/backend/middleware/auth.js index 85dd38f..716af84 100644 --- a/backend/middleware/auth.js +++ b/backend/middleware/auth.js @@ -180,20 +180,26 @@ const authenticate = async (req, res, next) => { const normalizedStartParam = trimmedParam.toLowerCase(); if (normalizedStartParam.startsWith('ref_')) { - // referralCode в базе хранится с префиксом "ref_" в верхнем регистре - // Ищем регистронезависимо по полному коду - const escapedCode = trimmedParam.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + // Убираем все префиксы ref_/REF_ (может быть двойной префикс ref_REF_) + let codeToSearch = trimmedParam; + while (codeToSearch.toLowerCase().startsWith('ref_')) { + codeToSearch = codeToSearch.substring(4); // Убираем "ref_" или "REF_" + } + + // referralCode в базе хранится с префиксом "REF_" (в верхнем регистре) + // Ищем по коду с префиксом REF_ + const escapedCode = codeToSearch.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); const referrer = await User.findOne({ - referralCode: { $regex: new RegExp(`^${escapedCode}$`, 'i') } + referralCode: { $regex: new RegExp(`^REF_${escapedCode}$`, 'i') } }); if (referrer) { referredBy = referrer._id; - console.log(`🔗 Реферальная ссылка: пользователь ${normalizedUser.username || normalizedUser.id} зарегистрирован по ссылке от ${referrer.username} (${referrer._id}), код: ${trimmedParam}`); + console.log(`🔗 Реферальная ссылка: пользователь ${normalizedUser.username || normalizedUser.id} зарегистрирован по ссылке от ${referrer.username} (${referrer._id}), код: ${trimmedParam} -> REF_${codeToSearch}`); } else { // Дополнительная проверка: посмотрим все referralCode в базе для отладки const allCodes = await User.find({ referralCode: { $exists: true } }, { referralCode: 1, username: 1 }).limit(5); - console.warn(`⚠️ Реферальный код не найден: ${trimmedParam}`); + console.warn(`⚠️ Реферальный код не найден: ${trimmedParam} (искали: REF_${codeToSearch})`); console.warn(` Примеры кодов в базе: ${allCodes.map(u => u.referralCode).join(', ')}`); } } else { diff --git a/backend/models/Tag.js b/backend/models/Tag.js index c0456aa..c30dd0c 100644 --- a/backend/models/Tag.js +++ b/backend/models/Tag.js @@ -48,3 +48,4 @@ TagSchema.index({ usageCount: -1 }); module.exports = mongoose.model('Tag', TagSchema); + diff --git a/frontend/src/components/LadderButton.css b/frontend/src/components/LadderButton.css index b17ab3d..098f153 100644 --- a/frontend/src/components/LadderButton.css +++ b/frontend/src/components/LadderButton.css @@ -61,3 +61,4 @@ 0 0 30px rgba(255, 165, 0, 0.4); } + diff --git a/frontend/src/utils/htmlEntities.js b/frontend/src/utils/htmlEntities.js index 43f102e..91b3309 100644 --- a/frontend/src/utils/htmlEntities.js +++ b/frontend/src/utils/htmlEntities.js @@ -10,3 +10,4 @@ export function decodeHtmlEntities(str = '') { return textarea.value; } +