Overhaul Sessioning

This commit was merged in pull request #55.
This commit is contained in:
David Rodenkirchen
2026-02-23 15:15:39 +01:00
parent 57c578a44b
commit b47eefe615
25 changed files with 216 additions and 179 deletions
+16 -6
View File
@@ -3,22 +3,32 @@ from typing import Optional
from rio import URL, GuardEvent
from src.ezgg_lan_manager.services.UserService import UserService
from src.ezgg_lan_manager.types.SessionStorage import SessionStorage
from src.ezgg_lan_manager.types.UserSession import UserSession
# Guards pages against access from users that are NOT logged in
def logged_in_guard(event: GuardEvent) -> Optional[URL]:
if event.session[SessionStorage].user_id is None:
try:
_ = event.session[UserSession].user_id
return None
except KeyError:
return URL("./")
# Guards pages against access from users that ARE logged in
def not_logged_in_guard(event: GuardEvent) -> Optional[URL]:
if event.session[SessionStorage].user_id is not None:
try:
_ = event.session[UserSession].user_id
return URL("./")
except KeyError:
return None
# Guards pages against access from users that are NOT logged in and NOT team members
def team_guard(event: GuardEvent) -> Optional[URL]:
user_id = event.session[SessionStorage].user_id
is_team_member = event.session[SessionStorage].is_team_member
if user_id is None or not is_team_member:
try:
user_id = event.session[UserSession].user_id
is_team_member = event.session[UserSession].is_team_member
if user_id and is_team_member:
return None
return URL("./")
except KeyError:
return URL("./")