defmodule CMSWeb.AdminAuth do @moduledoc false use CMSWeb, :verified_routes import Phoenix.Controller import Plug.Conn def log_in_admin(conn) do conn |> renew_session() |> put_session(:admin?, true) |> redirect(to: ~p"/") end def log_out_admin(conn) do if live_socket_id = get_session(conn, :live_socket_id) do CMSWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{}) end conn |> renew_session() |> redirect(to: ~p"/") end def correct_password?(password) do password_hash = Application.fetch_env!(:cms, :password_hash) Argon2.verify_pass(password, password_hash) end ## private defp renew_session(conn) do delete_csrf_token() conn |> configure_session(renew: true) |> clear_session() end end