diff --git a/lib/comfycamp/accounts.ex b/lib/comfycamp/accounts.ex index ffe006a..5cad78e 100644 --- a/lib/comfycamp/accounts.ex +++ b/lib/comfycamp/accounts.ex @@ -26,6 +26,13 @@ defmodule Comfycamp.Accounts do Repo.get_by(User, email: email) end + @doc """ + Get all users. + """ + def list_users() do + Repo.all(User) + end + @doc """ Gets a user by email and password. diff --git a/lib/comfycamp_web/controllers/admin_page_controller.ex b/lib/comfycamp_web/controllers/admin_page_controller.ex index d575ce1..35ec55a 100644 --- a/lib/comfycamp_web/controllers/admin_page_controller.ex +++ b/lib/comfycamp_web/controllers/admin_page_controller.ex @@ -7,18 +7,6 @@ defmodule ComfycampWeb.AdminPageController do |> render(:home, page_title: "Админка") end - def posts(conn, _params) do - conn - |> put_layout(html: :admin) - |> render(:home, page_title: "Админка") - end - - def users(conn, _params) do - conn - |> put_layout(html: :admin) - |> render(:home, page_title: "Админка") - end - def services(conn, _params) do conn |> put_layout(html: :admin) diff --git a/lib/comfycamp_web/controllers/user_editor_controller.ex b/lib/comfycamp_web/controllers/user_editor_controller.ex new file mode 100644 index 0000000..6d2c6e4 --- /dev/null +++ b/lib/comfycamp_web/controllers/user_editor_controller.ex @@ -0,0 +1,20 @@ +defmodule ComfycampWeb.UserEditorController do + use ComfycampWeb, :controller + alias Comfycamp.Accounts + + def index(conn, _params) do + users = Accounts.list_users() + + conn + |> put_layout(html: :admin) + |> render(:index, page_title: "Пользователи", users: users) + end + + def show(conn, %{"id" => id}) do + user = Accounts.get_user!(id) + + conn + |> put_layout(html: :admin) + |> render(:show, page_title: user.email, user: user) + end +end diff --git a/lib/comfycamp_web/controllers/user_editor_html.ex b/lib/comfycamp_web/controllers/user_editor_html.ex new file mode 100644 index 0000000..eff9a1a --- /dev/null +++ b/lib/comfycamp_web/controllers/user_editor_html.ex @@ -0,0 +1,45 @@ +defmodule ComfycampWeb.UserEditorHTML do + use ComfycampWeb, :html + + def index(assigns) do + ~H""" +
+

Пользователи

+ + + + + + + + <%= for user <- @users do %> + + + + + + + <% end %> +
IDEmailОдобрен?Админ?
<%= user.id %> + <.link href={~p"/admin/users/#{user}"}><%= user.email %> + <%= user.is_approved %><%= user.is_admin %>
+
+ """ + end + + def show(assigns) do + ~H""" +
+

<%= @user.email %>

+ <.back navigate={~p"/admin/users"}>Назад +

+ <%= if @user.info do %> + <%= @user.info %> + <% else %> + Описания нет. + <% end %> +

+
+ """ + end +end diff --git a/lib/comfycamp_web/router.ex b/lib/comfycamp_web/router.ex index 8ffb1de..3ce11d2 100644 --- a/lib/comfycamp_web/router.ex +++ b/lib/comfycamp_web/router.ex @@ -92,8 +92,8 @@ defmodule ComfycampWeb.Router do pipe_through [:browser, :require_authenticated_user, :ensure_admin] get "/", AdminPageController, :home - get "/users", AdminPageController, :users get "/services", AdminPageController, :services resources "/notes", NotesEditorController + resources "/users", UserEditorController, only: [:index, :show] end end