From 1acffbe36018a8f14c9eeed0bdae0789688ce079 Mon Sep 17 00:00:00 2001 From: Kerdo Kurs <kerdokurs@gmail.com> Date: Wed, 13 Nov 2024 16:36:19 +0200 Subject: [PATCH] add implementation for profile page #46 --- .../controllers/profile_controller.ex | 19 ++++++++++++++++++ .../controllers/profile_html.ex | 5 +++++ .../controllers/profile_html/index.html.heex | 20 +++++++++++++++++++ lib/proptrackr_web/router.ex | 4 +++- 4 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 lib/proptrackr_web/controllers/profile_controller.ex create mode 100644 lib/proptrackr_web/controllers/profile_html.ex create mode 100644 lib/proptrackr_web/controllers/profile_html/index.html.heex diff --git a/lib/proptrackr_web/controllers/profile_controller.ex b/lib/proptrackr_web/controllers/profile_controller.ex new file mode 100644 index 0000000..73d1c19 --- /dev/null +++ b/lib/proptrackr_web/controllers/profile_controller.ex @@ -0,0 +1,19 @@ +defmodule PropTrackrWeb.ProfileController do + use PropTrackrWeb, :controller + + import PropTrackr.Authentication + alias PropTrackr.Repo + alias PropTrackr.Accounts.User + + def index(conn, _params) do + user_id = get_session(conn, :user_id) + if user_id == nil do + conn + |> put_flash(:error, "You are not logged!") + |> redirect(to: ~p"/login") + else + user = Repo.get(User, user_id) + render(conn, "index.html", user: user) + end + end +end diff --git a/lib/proptrackr_web/controllers/profile_html.ex b/lib/proptrackr_web/controllers/profile_html.ex new file mode 100644 index 0000000..63f3ea9 --- /dev/null +++ b/lib/proptrackr_web/controllers/profile_html.ex @@ -0,0 +1,5 @@ +defmodule PropTrackrWeb.ProfileHTML do + use PropTrackrWeb, :html + + embed_templates "profile_html/*" +end diff --git a/lib/proptrackr_web/controllers/profile_html/index.html.heex b/lib/proptrackr_web/controllers/profile_html/index.html.heex new file mode 100644 index 0000000..81d464a --- /dev/null +++ b/lib/proptrackr_web/controllers/profile_html/index.html.heex @@ -0,0 +1,20 @@ +<.header> + Your profile + <:actions> + <.link href={~p"/me/details"}> + <.button>Edit details</.button> + </.link> + <.link href={~p"/me/delete"}> + <.button class="bg-red-700 hover:bg-red-500">Delete account</.button> + </.link> + </:actions> +</.header> + +<p class="italic"><%= @user.name %> <%= @user.surname %></p> + +<p><span class="bold">First name:</span> <%= @user.name %></p> +<p><span class="bold">Last name:</span> <%= @user.surname %></p> +<p><span class="bold">Birth date:</span> <%= @user.birth_date %></p> +<p><span class="bold">Phone number:</span> <%= @user.phone_number %></p> +<p><span class="bold">Email:</span> <%= @user.email %></p> +<p><span class="bold">Bio:</span> <%= @user.bio %></p> diff --git a/lib/proptrackr_web/router.ex b/lib/proptrackr_web/router.ex index 353a880..8ac12cd 100644 --- a/lib/proptrackr_web/router.ex +++ b/lib/proptrackr_web/router.ex @@ -23,8 +23,10 @@ defmodule PropTrackrWeb.Router do resources "/register", RegisterController, only: [:index, :create] resources "/login", LoginController, only: [:index, :create] resources "/logout", LogoutController + + resources "/me", ProfileController, only: [:index] + resources "/me/details", UpdateController, only: [:index, :create] resources "/me/password", PasswordController, only: [:index, :create] - resources "/me/details", UpdateController end # Other scopes may use custom stacks. -- GitLab