summaryrefslogtreecommitdiff
path: root/lib/lsg_web/context_plug.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lsg_web/context_plug.ex')
-rw-r--r--lib/lsg_web/context_plug.ex92
1 files changed, 0 insertions, 92 deletions
diff --git a/lib/lsg_web/context_plug.ex b/lib/lsg_web/context_plug.ex
deleted file mode 100644
index ebededa..0000000
--- a/lib/lsg_web/context_plug.ex
+++ /dev/null
@@ -1,92 +0,0 @@
-defmodule NolaWeb.ContextPlug do
- import Plug.Conn
- import Phoenix.Controller
-
- def init(opts \\ []) do
- opts || []
- end
-
- def get_account(conn) do
- cond do
- get_session(conn, :account) -> get_session(conn, :account)
- get_session(conn, :oidc_id) -> if account = IRC.Account.find_meta_account("identity-id", get_session(conn, :oidc_id)), do: account.id
- true -> nil
- end
- end
-
- def call(conn, opts) do
- account = with \
- {:account, account_id} when is_binary(account_id) <- {:account, get_account(conn)},
- {:account, account} when not is_nil(account) <- {:account, IRC.Account.get(account_id)}
- do
- account
- else
- _ -> nil
- end
-
- network = Map.get(conn.params, "network")
- network = if network == "-", do: nil, else: network
-
- oidc_account = IRC.Account.find_meta_account("identity-id", get_session(conn, :oidc_id))
-
- conns = IRC.Connection.get_network(network)
- chan = if c = Map.get(conn.params, "chan") do
- NolaWeb.reformat_chan(c)
- end
- chan_conn = IRC.Connection.get_network(network, chan)
-
- memberships = if account do
- IRC.Membership.of_account(account)
- end
-
- auth_required = cond do
- Keyword.get(opts, :restrict) == :public -> false
- account == nil -> true
- network == nil -> false
- Keyword.get(opts, :restrict) == :logged_in -> false
- network && chan ->
- !Enum.member?(memberships, {network, chan})
- network ->
- !Enum.any?(memberships, fn({n, _}) -> n == network end)
- end
-
- bot = cond do
- network && chan && chan_conn -> chan_conn.nick
- network && conns -> conns.nick
- true -> nil
- end
-
-
- cond do
- account && auth_required ->
- conn
- |> put_status(404)
- |> text("Page not found")
- |> halt()
- auth_required ->
- conn
- |> put_status(403)
- |> render(NolaWeb.AlcoologView, "auth.html", bot: bot, no_header: true, network: network)
- |> halt()
- (network && !conns) ->
- conn
- |> put_status(404)
- |> text("Page not found")
- |> halt()
- (chan && !chan_conn) ->
- conn
- |> put_status(404)
- |> text("Page not found")
- |> halt()
- true ->
- conn = conn
- |> assign(:network, network)
- |> assign(:chan, chan)
- |> assign(:bot, bot)
- |> assign(:account, account)
- |> assign(:oidc_account, oidc_account)
- |> assign(:memberships, memberships)
- end
- end
-
-end