Update files
This commit is contained in:
parent
3e89c8d42e
commit
94798f4d8b
|
|
@ -28,6 +28,17 @@ elif root_env_path.exists():
|
||||||
else:
|
else:
|
||||||
print(f"⚠️ .env file not found at: {root_env_path} or {docker_env_path}")
|
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):
|
class Settings(BaseSettings):
|
||||||
"""Application settings"""
|
"""Application settings"""
|
||||||
|
|
|
||||||
|
|
@ -111,9 +111,18 @@ async def send_code(request: SendCodeRequest, http_request: Request = None):
|
||||||
|
|
||||||
# Send code via email
|
# Send code via email
|
||||||
try:
|
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)
|
await send_verification_code(email_lower, code)
|
||||||
|
print(f"[ModerationAuth] ✅ Код успешно отправлен на {email_lower}")
|
||||||
return {"success": True, "message": "Код подтверждения отправлен на email"}
|
return {"success": True, "message": "Код подтверждения отправлен на email"}
|
||||||
except ValueError as email_error:
|
except ValueError as email_error:
|
||||||
|
print(f"[ModerationAuth] ❌ ValueError при отправке email: {email_error}")
|
||||||
|
import traceback
|
||||||
|
traceback.print_exc()
|
||||||
# Delete code if email failed
|
# Delete code if email failed
|
||||||
await email_verification_codes_collection().delete_many({
|
await email_verification_codes_collection().delete_many({
|
||||||
'email': email_lower,
|
'email': email_lower,
|
||||||
|
|
@ -124,6 +133,9 @@ async def send_code(request: SendCodeRequest, http_request: Request = None):
|
||||||
detail=str(email_error)
|
detail=str(email_error)
|
||||||
)
|
)
|
||||||
except Exception as 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({
|
await email_verification_codes_collection().delete_many({
|
||||||
'email': email_lower,
|
'email': email_lower,
|
||||||
'code': code
|
'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)"""
|
"""Send email using configured provider (AWS SES or SMTP)"""
|
||||||
email_provider = settings.EMAIL_PROVIDER.lower()
|
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':
|
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)
|
return await send_email_aws_ses(to, subject, html, text)
|
||||||
elif email_provider in ['yandex', 'smtp']:
|
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)
|
return await send_email_smtp(to, subject, html, text)
|
||||||
else:
|
else:
|
||||||
|
logger.error(f"[Email] ❌ Неподдерживаемый провайдер: '{settings.EMAIL_PROVIDER}'")
|
||||||
raise ValueError(f"Email provider '{settings.EMAIL_PROVIDER}' не поддерживается. Используйте 'aws', 'yandex' или 'smtp'")
|
raise ValueError(f"Email provider '{settings.EMAIL_PROVIDER}' не поддерживается. Используйте 'aws', 'yandex' или 'smtp'")
|
||||||
|
|
||||||
|
|
||||||
async def send_verification_code(email: str, code: str):
|
async def send_verification_code(email: str, code: str):
|
||||||
"""Send verification code to email"""
|
"""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"
|
subject = "Код подтверждения регистрации - Nakama"
|
||||||
html = generate_verification_email(code)
|
html = generate_verification_email(code)
|
||||||
text = f"Ваш код подтверждения: {code}. Код действителен 15 минут."
|
text = f"Ваш код подтверждения: {code}. Код действителен 15 минут."
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,8 @@ import urllib.parse
|
||||||
from typing import Optional, Dict, Any
|
from typing import Optional, Dict, Any
|
||||||
from config import settings
|
from config import settings
|
||||||
|
|
||||||
MAX_AUTH_AGE_SECONDS = 60 * 60 * 24 # 24 часа (увеличено для модерации)
|
MAX_AUTH_AGE_SECONDS = 60 * 60 * 24 * 7 # 7 дней (увеличено для модерации)
|
||||||
AUTH_AGE_TOLERANCE_SECONDS = 60 * 60 # 1 час допуск
|
AUTH_AGE_TOLERANCE_SECONDS = 60 * 60 * 24 # 24 часа допуск (увеличено для избежания "сессия устарела")
|
||||||
|
|
||||||
|
|
||||||
def validate_init_data(init_data_raw: str, bot_token: Optional[str] = None) -> Dict[str, Any]:
|
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-request-access', 'write');
|
||||||
script.setAttribute('data-onauth', 'onTelegramAuth');
|
script.setAttribute('data-onauth', 'onTelegramAuth');
|
||||||
script.setAttribute('data-radius', '10');
|
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 = () => {
|
script.onload = () => {
|
||||||
console.log('[Telegram Widget] Скрипт загружен');
|
console.log('[Telegram Widget] Скрипт загружен');
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue