Files
evo-sync/web/main.py
mguschin 865798967a feat: add Evotor OAuth connection feature with formatted phone input
- Add EvotorConnection model to store user's Evotor access tokens
- Implement OAuth 2.0 flow: /evotor (view), /evotor/connect, /evotor/callback, /evotor/disconnect
- Add Evotor connection page with connected/disconnected states
- Implement phone input masking (+7 (XXX) XXX-XX-XX) using Inputmask
- Add Russian validation messages for form fields
- Update phone validator to match masked format
- Add httpx dependency for async OAuth token exchange
- Add Evotor settings to config: CLIENT_ID, CLIENT_SECRET, SCOPES

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-03-05 21:33:41 +03:00

24 lines
776 B
Python

from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from starlette.middleware.sessions import SessionMiddleware
from web.config import settings
from web.database import engine, Base
from web.models import User, EvotorConnection # noqa: F401 — registers models with Base
from web.routes import auth, profile, reset, evotor
app = FastAPI(title="EvoSync — Личный кабинет")
app.add_middleware(SessionMiddleware, secret_key=settings.SECRET_KEY)
app.mount("/static", StaticFiles(directory="web/static"), name="static")
app.include_router(auth.router)
app.include_router(profile.router)
app.include_router(reset.router)
app.include_router(evotor.router)
@app.on_event("startup")
def on_startup():
Base.metadata.create_all(bind=engine)