web sttarting
This commit is contained in:
40
web/router.py
Normal file
40
web/router.py
Normal 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
|
||||
Reference in New Issue
Block a user