sloanelybutsurely.com/lib/cms_web/controllers/admin_auth.ex

40 lines
797 B
Elixir

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