Реализация реферальной системы и улучшение системы авторизации

- Добавлена полная реферальная система с GraphQL резолверами и UI компонентами
- Улучшена система регистрации с поддержкой ВКонтакте и реферальных ссылок
- Обновлена схема Prisma для поддержки реферальной системы
- Добавлены новые файлы документации правил системы
- Улучшена система партнерства и контрагентов
- Обновлены компоненты авторизации для поддержки новых функций
- Удален устаревший server.log

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Veronika Smirnova
2025-08-11 09:47:00 +03:00
parent af16402f22
commit 8f7ec70fe6
28 changed files with 5827 additions and 4313 deletions

View File

@ -9,9 +9,50 @@ import { AuthGuard } from '@/components/auth-guard'
function RegisterContent() {
const searchParams = useSearchParams()
const partnerCode = searchParams.get('partner')
const referralCode = searchParams.get('ref')
console.log('🔍 RegisterContent - URL параметры:', {
partnerCode,
referralCode,
searchParams: Object.fromEntries(searchParams.entries())
})
// Валидация: нельзя использовать оба параметра одновременно
if (partnerCode && referralCode) {
console.error('Попытка использовать и ref и partner одновременно')
redirect('/register') // Редирект на чистую регистрацию
return null
}
// Валидация формата кода (10 символов, только разрешенные)
const isValidCode = (code: string | null): boolean => {
if (!code) return true // null/undefined разрешены
return /^[ABCDEFGHJKLMNPQRSTUVWXYZ23456789]{10}$/.test(code)
}
if (referralCode && !isValidCode(referralCode)) {
console.error(`Недействительный реферальный код: ${referralCode}`)
redirect('/register')
return null
}
if (partnerCode && !isValidCode(partnerCode)) {
console.error(`Недействительный партнерский код: ${partnerCode}`)
redirect('/register')
return null
}
console.log('🚀 RegisterContent - Передача в AuthFlow:', { partnerCode, referralCode })
// Если есть реферальный или партнерский код, всегда показываем AuthFlow
// даже для авторизованных пользователей (для создания дополнительных организаций)
if (partnerCode || referralCode) {
console.log('🎯 RegisterContent - Принудительный показ AuthFlow из-за наличия кода')
return <AuthFlow partnerCode={partnerCode} referralCode={referralCode} />
}
return (
<AuthGuard fallback={<AuthFlow partnerCode={partnerCode} />}>
<AuthGuard fallback={<AuthFlow partnerCode={partnerCode} referralCode={referralCode} />}>
{/* Если пользователь авторизован, перенаправляем в дашборд */}
{redirect('/dashboard')}
</AuthGuard>