diff --git a/portal/tools.py b/portal/tools.py index 03991c4..626d941 100644 --- a/portal/tools.py +++ b/portal/tools.py @@ -39,6 +39,7 @@ class Tool: togglable: bool = False # only True if in the controller allowlist logs_url: str | None = None # deep link for the failed state (dozzle) admin_service: bool = False # toggle strip visible to admins only + who: tuple[str, ...] | None = None # explicit allowed usernames (e.g. ("sam", "jo")) def section_label(category: str) -> str: @@ -200,12 +201,20 @@ def _cat() -> list[Tool]: "Personal finance", "https://firefly.lab.audasmedia.com.au", login=True, admin=True), Tool("vaultwarden", "Vaultwarden", "data", "Password manager", "https://vaultwarden.lab.audasmedia.com.au", login=True, admin=True), + Tool("webmail", "Webmail", "data", + "Home webmail", "https://mail.lab.audasmedia.com.au", login=True, admin=True, who=("sam",)), # ---- Home Management ---------------------------------------------- Tool("homebox", "Homebox", "home-mgmt", "Home inventory & items", "https://homebox.lab.audasmedia.com.au", login=True), Tool("toora", "Toora Wiki", "home-mgmt", "Home wiki", "https://toora.lab.audasmedia.com.au", login=True), + Tool("webrestrict", "Web Restrict", "home-mgmt", + "Web filtering & restriction controls", "https://webrestrict.lab.audasmedia.com.au", + login=True, who=("sam", "jo")), + Tool("school", "School Portal", "home-mgmt", + "School portal & learning resources", "https://school.lab.audasmedia.com.au", + login=True, who=("sam", "jo", "finn", "harry")), Tool("sams", "Sams Files", "home-mgmt", "Home file server (LAN)", "http://sams.home.lab", lan=True), @@ -333,6 +342,8 @@ def tools_for_user(user) -> list[tuple[str, list[Tool]]]: continue if tool.admin_service and not user.is_admin: continue + if tool.who is not None and user.username.strip().lower() not in tool.who: + continue if not allowed.get(tool.category, True): continue # Specialise the dsh chat link to the logged-in user's own instance.