From b5bceb92e01a9cf9af7f9e7c2cf4c97e68fa1e3a Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sun, 20 Oct 2024 19:05:41 +0100 Subject: [PATCH] Add login route with hardcoded password validation --- .../layouts/unauthenticated.html.heex | 6 +++ .../controllers/session_controller.ex | 21 ++++++++ .../controllers/session_html.ex | 5 ++ .../controllers/session_html/new.html.heex | 48 +++++++++++++++++++ lib/music_library_web/router.ex | 3 ++ 5 files changed, 83 insertions(+) create mode 100644 lib/music_library_web/components/layouts/unauthenticated.html.heex create mode 100644 lib/music_library_web/controllers/session_controller.ex create mode 100644 lib/music_library_web/controllers/session_html.ex create mode 100644 lib/music_library_web/controllers/session_html/new.html.heex diff --git a/lib/music_library_web/components/layouts/unauthenticated.html.heex b/lib/music_library_web/components/layouts/unauthenticated.html.heex new file mode 100644 index 00000000..1149be16 --- /dev/null +++ b/lib/music_library_web/components/layouts/unauthenticated.html.heex @@ -0,0 +1,6 @@ +
+
+ <.flash_group flash={@flash} /> + <%= @inner_content %> +
+
diff --git a/lib/music_library_web/controllers/session_controller.ex b/lib/music_library_web/controllers/session_controller.ex new file mode 100644 index 00000000..a340d55c --- /dev/null +++ b/lib/music_library_web/controllers/session_controller.ex @@ -0,0 +1,21 @@ +defmodule MusicLibraryWeb.SessionController do + use MusicLibraryWeb, :controller + + @empty_form %{"password" => ""} + + def new(conn, _params) do + conn |> render(:new, form: @empty_form, layout: {MusicLibraryWeb.Layouts, "unauthenticated"}) + end + + def create(conn, params) do + password = params["password"] + + if password == "password" do + redirect(conn, to: "/") + else + conn + |> put_flash(:error, "Invalid password") + |> redirect(to: ~p"/login") + end + end +end diff --git a/lib/music_library_web/controllers/session_html.ex b/lib/music_library_web/controllers/session_html.ex new file mode 100644 index 00000000..c1c6935f --- /dev/null +++ b/lib/music_library_web/controllers/session_html.ex @@ -0,0 +1,5 @@ +defmodule MusicLibraryWeb.SessionHTML do + use MusicLibraryWeb, :html + + embed_templates "session_html/*" +end diff --git a/lib/music_library_web/controllers/session_html/new.html.heex b/lib/music_library_web/controllers/session_html/new.html.heex new file mode 100644 index 00000000..550359ed --- /dev/null +++ b/lib/music_library_web/controllers/session_html/new.html.heex @@ -0,0 +1,48 @@ +
+
+
+

+ Welcome to your Music Library +

+
+ <.form class="space-y-6" for={@form} action={~p"/sessions/create"}> +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ +
+ +
+
diff --git a/lib/music_library_web/router.ex b/lib/music_library_web/router.ex index 2f7a6392..e5817f48 100644 --- a/lib/music_library_web/router.ex +++ b/lib/music_library_web/router.ex @@ -21,6 +21,9 @@ defmodule MusicLibraryWeb.Router do get "/covers/:record_id", CoverController, :show get "/", StatsController, :index + get "/login", SessionController, :new + post "/sessions/create", SessionController, :create + live "/records", RecordLive.Index, :index live "/records/import", RecordLive.Index, :import live "/records/:id/edit", RecordLive.Index, :edit