Overhaul Sessioning
This commit was merged in pull request #55.
This commit is contained in:
@@ -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("./")
|
||||
|
||||
Reference in New Issue
Block a user