web sttarting

This commit is contained in:
2026-03-31 13:25:14 +05:00
parent 9cd6d83428
commit 59b3bcd0f4
30 changed files with 720 additions and 242 deletions

40
web/router.py Normal file
View File

@@ -0,0 +1,40 @@
import flet as ft
from view import resolve_view, PUBLIC_ROUTES
async def _handle_route_change(page: ft.Page, e: ft.RouteChangeEvent):
route = page.route
token = page.session.store.get("auth_token")
# Публичные маршруты — без проверки токена
if route in PUBLIC_ROUTES:
views = resolve_view(page, route)
page.views.clear()
page.views.extend(views)
page.update()
return
# Защищённый маршрут без токена → логин
if not token:
await page.push_route("/login")
return
views = resolve_view(page, route)
# Неизвестный маршрут → на страницу пользователя
if views is None:
session_key = page.session.store.get("session_key") or ""
await page.push_route(f"/user/{session_key}")
return
page.views.clear()
page.views.extend(views)
page.update()
def setup_router(page: ft.Page):
"""Привязывает router к странице. Вызывается один раз в main()."""
async def _on_route_change(e: ft.RouteChangeEvent):
await _handle_route_change(page, e)
page.on_route_change = _on_route_change