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