Update files
This commit is contained in:
parent
3e89c8d42e
commit
94798f4d8b
|
|
@ -28,6 +28,17 @@ elif root_env_path.exists():
|
|||
else:
|
||||
print(f"⚠️ .env file not found at: {root_env_path} or {docker_env_path}")
|
||||
|
||||
# Debug: Print email-related env vars
|
||||
print(f"[Config] 🔍 Email настройки из .env:")
|
||||
print(f"[Config] EMAIL_PROVIDER (raw): '{os.getenv('EMAIL_PROVIDER', 'NOT SET')}'")
|
||||
print(f"[Config] EMAIL_FROM: '{os.getenv('EMAIL_FROM', 'NOT SET')}'")
|
||||
print(f"[Config] AWS_SES_ACCESS_KEY_ID: {'SET' if os.getenv('AWS_SES_ACCESS_KEY_ID') else 'NOT SET'}")
|
||||
print(f"[Config] AWS_SES_SECRET_ACCESS_KEY: {'SET' if os.getenv('AWS_SES_SECRET_ACCESS_KEY') else 'NOT SET'}")
|
||||
print(f"[Config] AWS_SES_REGION: '{os.getenv('AWS_SES_REGION', 'NOT SET')}'")
|
||||
print(f"[Config] AWS_SES_ENDPOINT_URL: '{os.getenv('AWS_SES_ENDPOINT_URL', 'NOT SET')}'")
|
||||
print(f"[Config] YANDEX_SMTP_USER: {'SET' if os.getenv('YANDEX_SMTP_USER') else 'NOT SET'}")
|
||||
print(f"[Config] YANDEX_SMTP_PASSWORD: {'SET' if os.getenv('YANDEX_SMTP_PASSWORD') else 'NOT SET'}")
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
"""Application settings"""
|
||||
|
|
|
|||
|
|
@ -111,9 +111,18 @@ async def send_code(request: SendCodeRequest, http_request: Request = None):
|
|||
|
||||
# Send code via email
|
||||
try:
|
||||
print(f"[ModerationAuth] 📧 Попытка отправить код на {email_lower}")
|
||||
print(f"[ModerationAuth] 📧 Код: {code}")
|
||||
print(f"[ModerationAuth] 📧 EMAIL_PROVIDER из settings: '{settings.EMAIL_PROVIDER}'")
|
||||
print(f"[ModerationAuth] 📧 EMAIL_FROM: '{settings.EMAIL_FROM}'")
|
||||
|
||||
await send_verification_code(email_lower, code)
|
||||
print(f"[ModerationAuth] ✅ Код успешно отправлен на {email_lower}")
|
||||
return {"success": True, "message": "Код подтверждения отправлен на email"}
|
||||
except ValueError as email_error:
|
||||
print(f"[ModerationAuth] ❌ ValueError при отправке email: {email_error}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
# Delete code if email failed
|
||||
await email_verification_codes_collection().delete_many({
|
||||
'email': email_lower,
|
||||
|
|
@ -124,6 +133,9 @@ async def send_code(request: SendCodeRequest, http_request: Request = None):
|
|||
detail=str(email_error)
|
||||
)
|
||||
except Exception as email_error:
|
||||
print(f"[ModerationAuth] ❌ Exception при отправке email: {type(email_error).__name__}: {email_error}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
await email_verification_codes_collection().delete_many({
|
||||
'email': email_lower,
|
||||
'code': code
|
||||
|
|
|
|||
|
|
@ -224,16 +224,45 @@ async def send_email(to: str, subject: str, html: str, text: Optional[str] = Non
|
|||
"""Send email using configured provider (AWS SES or SMTP)"""
|
||||
email_provider = settings.EMAIL_PROVIDER.lower()
|
||||
|
||||
logger.info(f"[Email] 🔍 Начало отправки email")
|
||||
logger.info(f"[Email] Provider из настроек: '{settings.EMAIL_PROVIDER}' (lowercase: '{email_provider}')")
|
||||
logger.info(f"[Email] To: {to}")
|
||||
logger.info(f"[Email] From: {settings.EMAIL_FROM}")
|
||||
logger.info(f"[Email] Subject: {subject}")
|
||||
|
||||
if email_provider == 'aws':
|
||||
logger.info(f"[Email] Выбран AWS SES")
|
||||
logger.info(f"[Email] AWS_SES_ACCESS_KEY_ID: {'установлен' if settings.AWS_SES_ACCESS_KEY_ID else 'НЕ УСТАНОВЛЕН'}")
|
||||
logger.info(f"[Email] AWS_SES_SECRET_ACCESS_KEY: {'установлен' if settings.AWS_SES_SECRET_ACCESS_KEY else 'НЕ УСТАНОВЛЕН'}")
|
||||
logger.info(f"[Email] AWS_SES_REGION: {settings.AWS_SES_REGION}")
|
||||
logger.info(f"[Email] AWS_SES_ENDPOINT_URL: {settings.AWS_SES_ENDPOINT_URL or 'не установлен'}")
|
||||
return await send_email_aws_ses(to, subject, html, text)
|
||||
elif email_provider in ['yandex', 'smtp']:
|
||||
logger.info(f"[Email] Выбран SMTP ({email_provider})")
|
||||
logger.info(f"[Email] YANDEX_SMTP_USER: {'установлен' if settings.YANDEX_SMTP_USER else 'НЕ УСТАНОВЛЕН'}")
|
||||
logger.info(f"[Email] YANDEX_SMTP_PASSWORD: {'установлен' if settings.YANDEX_SMTP_PASSWORD else 'НЕ УСТАНОВЛЕН'}")
|
||||
logger.info(f"[Email] YANDEX_SMTP_HOST: {settings.YANDEX_SMTP_HOST}")
|
||||
logger.info(f"[Email] YANDEX_SMTP_PORT: {settings.YANDEX_SMTP_PORT}")
|
||||
return await send_email_smtp(to, subject, html, text)
|
||||
else:
|
||||
logger.error(f"[Email] ❌ Неподдерживаемый провайдер: '{settings.EMAIL_PROVIDER}'")
|
||||
raise ValueError(f"Email provider '{settings.EMAIL_PROVIDER}' не поддерживается. Используйте 'aws', 'yandex' или 'smtp'")
|
||||
|
||||
|
||||
async def send_verification_code(email: str, code: str):
|
||||
"""Send verification code to email"""
|
||||
logger.info(f"[Email] 📧 send_verification_code вызван для {email}")
|
||||
logger.info(f"[Email] 📧 Проверка настроек перед отправкой:")
|
||||
logger.info(f"[Email] 📧 EMAIL_PROVIDER (raw): '{settings.EMAIL_PROVIDER}'")
|
||||
logger.info(f"[Email] 📧 EMAIL_PROVIDER (lower): '{settings.EMAIL_PROVIDER.lower()}'")
|
||||
logger.info(f"[Email] 📧 EMAIL_FROM: '{settings.EMAIL_FROM}'")
|
||||
logger.info(f"[Email] 📧 AWS_SES_ACCESS_KEY_ID: {'установлен' if settings.AWS_SES_ACCESS_KEY_ID else 'НЕ УСТАНОВЛЕН'}")
|
||||
logger.info(f"[Email] 📧 AWS_SES_SECRET_ACCESS_KEY: {'установлен' if settings.AWS_SES_SECRET_ACCESS_KEY else 'НЕ УСТАНОВЛЕН'}")
|
||||
logger.info(f"[Email] 📧 AWS_SES_REGION: '{settings.AWS_SES_REGION}'")
|
||||
logger.info(f"[Email] 📧 AWS_SES_ENDPOINT_URL: '{settings.AWS_SES_ENDPOINT_URL}'")
|
||||
logger.info(f"[Email] 📧 YANDEX_SMTP_USER: {'установлен' if settings.YANDEX_SMTP_USER else 'НЕ УСТАНОВЛЕН'}")
|
||||
logger.info(f"[Email] 📧 YANDEX_SMTP_PASSWORD: {'установлен' if settings.YANDEX_SMTP_PASSWORD else 'НЕ УСТАНОВЛЕН'}")
|
||||
|
||||
subject = "Код подтверждения регистрации - Nakama"
|
||||
html = generate_verification_email(code)
|
||||
text = f"Ваш код подтверждения: {code}. Код действителен 15 минут."
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import urllib.parse
|
|||
from typing import Optional, Dict, Any
|
||||
from config import settings
|
||||
|
||||
MAX_AUTH_AGE_SECONDS = 60 * 60 * 24 # 24 часа (увеличено для модерации)
|
||||
AUTH_AGE_TOLERANCE_SECONDS = 60 * 60 # 1 час допуск
|
||||
MAX_AUTH_AGE_SECONDS = 60 * 60 * 24 * 7 # 7 дней (увеличено для модерации)
|
||||
AUTH_AGE_TOLERANCE_SECONDS = 60 * 60 * 24 # 24 часа допуск (увеличено для избежания "сессия устарела")
|
||||
|
||||
|
||||
def validate_init_data(init_data_raw: str, bot_token: Optional[str] = None) -> Dict[str, Any]:
|
||||
|
|
|
|||
|
|
@ -315,6 +315,10 @@ export default function App() {
|
|||
script.setAttribute('data-request-access', 'write');
|
||||
script.setAttribute('data-onauth', 'onTelegramAuth');
|
||||
script.setAttribute('data-radius', '10');
|
||||
// Добавить auth-url для валидации домена
|
||||
const API_URL = getApiUrl();
|
||||
const fullApiUrl = API_URL.startsWith('http') ? API_URL : `${window.location.origin}${API_URL}`;
|
||||
script.setAttribute('data-auth-url', `${fullApiUrl}/moderation-auth/telegram-widget`);
|
||||
|
||||
script.onload = () => {
|
||||
console.log('[Telegram Widget] Скрипт загружен');
|
||||
|
|
|
|||
Loading…
Reference in New Issue