| defmodule PlausibleWeb.Live.SuperAdminLiveAuth do | |
| @moduledoc """ | |
| LiveView `on_mount` hook that enforces super-admin access on every WebSocket | |
| mount and reconnect. | |
| """ | |
| import Phoenix.LiveView, only: [redirect: 2] | |
| alias PlausibleWeb.UserAuth | |
| def on_mount(:default, _params, session, socket) do | |
| current_user = | |
| case UserAuth.get_user_session(session) do | |
| {:ok, %{user: user}} -> user | |
| _ -> nil | |
| end | |
| if Plausible.Auth.super_admin?(current_user) do | |
| {:cont, socket} | |
| else | |
| {:halt, redirect(socket, to: "/")} | |
| end | |
| end | |
| end | |