Implement email-based 2FA authentication for Telegram bot with Oracle integration fixes
This commit adds a complete email authentication flow for the Telegram bot, allowing users to login with email + password instead of web app linking codes. Includes critical bug fixes for Oracle integration. **New Features:** - Email-based 2FA authentication with 6-digit codes sent via SMTP - Backend endpoints: verify-email and login-with-email - ConversationHandler for email authentication flow in Telegram bot - Session token verification to prevent user ID spoofing - Rate limiting (5 attempts per 5 minutes) - Email code expiry (5 minutes) with automatic cleanup **Bug Fixes:** - Fixed Oracle column name: ACTIV → INACTIV (with inverted logic) - Fixed Oracle password verification: verificautilizator returns checksum, not user_id - Fixed username case sensitivity: Oracle usernames must be uppercase - Fixed SMTP connection: use start_tls parameter instead of manual STARTTLS - Added middleware exclusions for public email auth endpoints **Backend Changes:** - Added verify-email endpoint (public) in telegram.py - Added login-with-email endpoint (public) with rate limiting and session verification - Updated middleware exclusions in main.py and auth_middleware_wrapper.py - Added AUTH_SESSION_SECRET configuration for session token signing **Telegram Bot Changes:** - New modules: app/auth/email_auth.py, app/bot/email_handlers.py - New utilities: app/utils/email_service.py (SMTP email sending) - Updated handlers.py: ignore callbacks handled by ConversationHandler - Updated menus.py: show Login button for unauthenticated users - Updated API client: verify_email() and login_with_email() methods - Database: email_auth_codes table with cleanup task **Configuration:** - Added SMTP configuration to telegram-bot .env.example - Added AUTH_SESSION_SECRET to backend .env.example - Updated .gitignore: exclude temporary files (*.pid, *.checksum, test scripts) **Dependencies:** - Added aiosmtplib for async SMTP email sending 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
21
.gitignore
vendored
21
.gitignore
vendored
@@ -444,3 +444,24 @@ yarn-error.log*
|
||||
# Allow proper test files (pytest, unittest) but exclude temporary test scripts
|
||||
!**/tests/test_*.py
|
||||
!**/test_*.py
|
||||
|
||||
# ============================================================================
|
||||
# 🧹 TEMPORARY FILES FROM DEBUGGING SESSION - DO NOT COMMIT
|
||||
# ============================================================================
|
||||
|
||||
# PID files from bot processes
|
||||
*.pid
|
||||
bot.pid
|
||||
|
||||
# Requirements checksums (generated by start-dev.sh)
|
||||
*.checksum
|
||||
|
||||
# Temporary debugging/testing scripts in telegram-bot
|
||||
reports-app/telegram-bot/check_db.py
|
||||
reports-app/telegram-bot/test_email.py
|
||||
|
||||
# Temporary planning documents
|
||||
TELEGRAM_EMAIL_AUTH_PLAN*.md
|
||||
|
||||
# Weird pip artifacts
|
||||
=*
|
||||
|
||||
Reference in New Issue
Block a user