40 lines
797 B
Elixir
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
|