diff --git a/server/lib/server_web/controllers/auth_controller.ex b/server/lib/server_web/controllers/auth_controller.ex new file mode 100644 index 0000000..dd51b42 --- /dev/null +++ b/server/lib/server_web/controllers/auth_controller.ex @@ -0,0 +1,28 @@ +defmodule ServerWeb.AuthController do + use ServerWeb, :controller + + def login(conn, _params) do + render(conn, :login, error: nil, layout: false) + end + + def create(conn, %{"password" => password}) do + case Server.Auth.verify_password(password) do + :ok -> + conn + |> configure_session(renew: true) + |> put_session(:authenticated, true) + |> redirect(to: "/") + + :error -> + conn + |> put_status(:unauthorized) + |> render(:login, error: "Incorrect password.", layout: false) + end + end + + def delete(conn, _params) do + conn + |> configure_session(drop: true) + |> redirect(to: "/login") + end +end diff --git a/server/lib/server_web/controllers/auth_html.ex b/server/lib/server_web/controllers/auth_html.ex new file mode 100644 index 0000000..a48bc20 --- /dev/null +++ b/server/lib/server_web/controllers/auth_html.ex @@ -0,0 +1,5 @@ +defmodule ServerWeb.AuthHTML do + use ServerWeb, :html + + embed_templates "auth_html/*" +end diff --git a/server/lib/server_web/controllers/auth_html/login.html.heex b/server/lib/server_web/controllers/auth_html/login.html.heex new file mode 100644 index 0000000..75f4226 --- /dev/null +++ b/server/lib/server_web/controllers/auth_html/login.html.heex @@ -0,0 +1,43 @@ + + +
+ + + +{@error}
+ <% end %> + + +