From 947caa5fee4c45e62824ca275fb31adbf6dc8c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6pke?= Date: Tue, 2 Sep 2025 23:34:44 +0200 Subject: [PATCH] add session admin identifier --- config/config.exs | 3 +++ lib/alchemy_pub/plug_session.ex | 2 ++ lib/alchemy_pub_web/page_live.ex | 6 ++++-- lib/alchemy_pub_web/page_live.html.heex | 3 ++- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/config/config.exs b/config/config.exs index 162bbd9..a78dbc0 100644 --- a/config/config.exs +++ b/config/config.exs @@ -35,6 +35,9 @@ config :alchemy_pub, :copyright, url: "https://creativecommons.org/licenses/by/4.0/", license: "CC BY 4.0" +config :alchemy_pub, + admin_id: System.get_env("ADMIN_ID") + config :alchemy_pub, ecto_repos: [AlchemyPub.Repo] diff --git a/lib/alchemy_pub/plug_session.ex b/lib/alchemy_pub/plug_session.ex index d083c7f..e80863c 100644 --- a/lib/alchemy_pub/plug_session.ex +++ b/lib/alchemy_pub/plug_session.ex @@ -5,12 +5,14 @@ defmodule AlchemyPub.Plugs.Session do def call(conn, _opts) do session_id = get_session(conn, :session_id) || generate_session_id() + admin_id = Map.get(conn.req_cookies, "admin_id", nil) referrer = get_session(conn, :referrer) || List.keyfind(conn.req_headers, "referer", 0, {nil, ""}) |> elem(1) conn + |> put_session(:admin_id, admin_id) |> put_session(:session_id, session_id) |> put_session(:referrer, referrer) end diff --git a/lib/alchemy_pub_web/page_live.ex b/lib/alchemy_pub_web/page_live.ex index 1c36cb4..f844028 100644 --- a/lib/alchemy_pub_web/page_live.ex +++ b/lib/alchemy_pub_web/page_live.ex @@ -11,7 +11,7 @@ defmodule AlchemyPubWeb.PageLive do defp active_class, do: "menu-active" @impl true - def mount(_params, %{"session_id" => session_id, "referrer" => referrer}, socket) do + def mount(_params, %{"session_id" => session_id, "referrer" => referrer} = session, socket) do if connected?(socket) do PubSub.subscribe(AlchemyPub.PubSub, "page_update") PubSub.subscribe(AlchemyPub.PubSub, @topic) @@ -24,6 +24,7 @@ defmodule AlchemyPubWeb.PageLive do end copyright = Application.get_env(:alchemy_pub, :copyright) + admin_id = Application.get_env(:alchemy_pub, :admin_id) {:ok, socket @@ -38,7 +39,8 @@ defmodule AlchemyPubWeb.PageLive do track_valid: false, subpage: nil, fullscreen: false, - mute: false + mute: false, + admin: admin_id && session["admin_id"] == admin_id ) |> stream_configure(:deck, []) |> stream(:deck, [])} diff --git a/lib/alchemy_pub_web/page_live.html.heex b/lib/alchemy_pub_web/page_live.html.heex index e2922e5..8d8c5a7 100644 --- a/lib/alchemy_pub_web/page_live.html.heex +++ b/lib/alchemy_pub_web/page_live.html.heex @@ -92,7 +92,8 @@ -- 2.51.2