From 70bc700a11f2011b04b52418eac02087928150c6 Mon Sep 17 00:00:00 2001 From: Asger Geel Weirsoee Date: Sun, 4 Oct 2026 22:29:19 +0200 Subject: [PATCH] =?UTF-8?q?feat(podcast):=20ogs=C3=A5=20gruppen=20Gramps?= =?UTF-8?q?=20m=C3=A5=20lytte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Slægten uden for den nære familie inviteres i gruppen Gramps, der kun giver Gramps, podcasten og portalen. PODCAST_GROUP er nu kommasepareret (standard "Familie,Gramps"). Podcast-kortet på forsiden vises også, selvom brugeren ingen andre apps har. Invitationssiden forklarer de kendte grupper med en linje, så det er tydeligt hvad Familie, Gramps og Crawlkit-team giver. Claude-Session: https://claude.ai/code/session_012LCTmU2ewo8tnM1dByYAoG --- config.py | 5 +++-- main.py | 6 +++--- templates/admin_invitations.html | 7 ++++++- templates/dashboard_body.html | 26 +++++++++++++------------- 4 files changed, 25 insertions(+), 19 deletions(-) diff --git a/config.py b/config.py index 6cec268..d2210c4 100644 --- a/config.py +++ b/config.py @@ -13,8 +13,9 @@ API_TOKEN = os.environ["AUTHENTIK_API_TOKEN"] SECRET_KEY = os.environ["SESSION_SECRET"] REDIRECT_URI = os.environ.get("OIDC_REDIRECT_URI", "https://weircon.dk/auth/callback") ADMIN_GROUP = os.environ.get("ADMIN_GROUP", "authentik Admins") -# Hvem der må høre familiens podcasts (/podcast); admins kan altid. -PODCAST_GROUP = os.environ.get("PODCAST_GROUP", "Familie") +# Hvem der må høre familiens podcasts (/podcast); admins kan altid. Kommasepareret: +# Familie er den nære familie, Gramps er slægten der kun har Gramps + podcast + portal. +PODCAST_GROUPS = {g.strip() for g in os.environ.get("PODCAST_GROUP", "Familie,Gramps").split(",") if g.strip()} MATOMO_BASE = os.environ.get("MATOMO_BASE", "https://matomo.weircon.dk").rstrip("/") MATOMO_TOKEN = os.environ.get("MATOMO_TOKEN", "") diff --git a/main.py b/main.py index 1777a14..66489af 100644 --- a/main.py +++ b/main.py @@ -71,14 +71,14 @@ def require_admin(request: Request): def require_familie(request: Request): - """Logget ind og i PODCAST_GROUP (eller admin). Uden login: login og tilbage hertil.""" + """Logget ind og i en af PODCAST_GROUPS (eller admin). Uden login: login og tilbage hertil.""" user = current_user(request) if not user and request.method == "GET": nxt = request.url.path + (f"?{request.url.query}" if request.url.query else "") raise HTTPException(303, headers={"Location": "/auth/login?next=" + urllib.parse.quote(nxt, safe="")}) if not user: raise HTTPException(401, "Log ind først") - if not (is_admin(user) or config.PODCAST_GROUP in (user.get("groups") or [])): + if not (is_admin(user) or config.PODCAST_GROUPS & set(user.get("groups") or [])): raise HTTPException(403, "Kun for familien") return user @@ -153,7 +153,7 @@ async def dashboard_content(request: Request): def _podcast_kort(user) -> list[dict]: """Kort til forsiden: én pr. podcast med udgivne episoder (admins ser også kladder).""" - if not (is_admin(user) or config.PODCAST_GROUP in (user.get("groups") or [])): + if not (is_admin(user) or config.PODCAST_GROUPS & set(user.get("groups") or [])): return [] ud = [] for name in podcast.shows(): diff --git a/templates/admin_invitations.html b/templates/admin_invitations.html index f380cd4..4eab4a5 100644 --- a/templates/admin_invitations.html +++ b/templates/admin_invitations.html @@ -24,13 +24,18 @@

Grupper de skal med i

+ {% set gruppe_hjaelp = { + "Familie": "den nære familie: Sønderlund, Mealie, Emby, Gramps (redigér), podcast m.m.", + "Gramps": "kun Gramps (læse), familiens podcast og portalen", + "Crawlkit-team": "kun crawlkit", + } %} {% for g in grupper %} diff --git a/templates/dashboard_body.html b/templates/dashboard_body.html index 2ddea99..58dacc9 100644 --- a/templates/dashboard_body.html +++ b/templates/dashboard_body.html @@ -12,19 +12,6 @@
{% endmacro %} {% if error %}
{{ error }}
{% endif %} -{% if groups %} -
-
⌕ -
-
- - -
-
- {% if podcasts %}

🎙️ Familiens podcast

@@ -40,6 +27,19 @@
{% endif %} +{% if groups %} +
+
⌕ +
+
+ + +
+
+ {% if mc_servers %}

⛏️ Minecraft-servere