From eb313cf6955bfd2a4a5bcbc9698b31fc31e25419 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Mon, 1 Apr 2019 11:29:03 -0400 Subject: [PATCH] Add approved clients to account view --- .../controllers/account_controller.ex | 26 +++++++++++++++-- lib/frenzy_web/router.ex | 1 + .../templates/account/show.html.eex | 28 ++++++++++++++++++- 3 files changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/frenzy_web/controllers/account_controller.ex b/lib/frenzy_web/controllers/account_controller.ex index 8cce1ab..b8e50a4 100644 --- a/lib/frenzy_web/controllers/account_controller.ex +++ b/lib/frenzy_web/controllers/account_controller.ex @@ -1,14 +1,22 @@ defmodule FrenzyWeb.AccountController do use FrenzyWeb, :controller - alias Frenzy.{Repo, User} + alias Frenzy.{Repo, User, FervorClient} alias FrenzyWeb.Router.Helpers, as: Routes alias FrenzyWeb.Endpoint def show(conn, _params) do - user = conn.assigns[:user] + user = conn.assigns[:user] |> Repo.preload(:approved_clients) + + clients = + user.approved_clients + |> Enum.map(fn approved_client -> + fervor_client = Repo.get_by(FervorClient, client_id: approved_client.client_id) + {approved_client, fervor_client} + end) render(conn, "show.html", %{ - user: user + user: user, + clients: clients }) end @@ -82,4 +90,16 @@ defmodule FrenzyWeb.AccountController do def do_change_fever_password(conn, _params) do redirect(conn, to: Routes.account_path(Endpoint, :change_fever_password)) end + + def remove_client(conn, %{"client_id" => client_id}) do + user = conn.assigns[:user] |> Repo.preload(:approved_clients) + + approved_client = Enum.find(user.approved_clients, fn c -> c.client_id == client_id end) + + if not is_nil(approved_client) do + {:ok, _} = Repo.delete(approved_client) + end + + redirect(conn, to: Routes.account_path(Endpoint, :show)) + end end diff --git a/lib/frenzy_web/router.ex b/lib/frenzy_web/router.ex index cb46e7f..2de9b53 100644 --- a/lib/frenzy_web/router.ex +++ b/lib/frenzy_web/router.ex @@ -40,6 +40,7 @@ defmodule FrenzyWeb.Router do post "/account/change_password", AccountController, :do_change_password get "/account/change_fever_password", AccountController, :change_fever_password post "/account/change_fever_password", AccountController, :do_change_fever_password + post "/account/remove_client", AccountController, :remove_client get "/", GroupController, :index resources "/groups", GroupController, except: [:edit, :update] diff --git a/lib/frenzy_web/templates/account/show.html.eex b/lib/frenzy_web/templates/account/show.html.eex index 308a76b..d29553d 100644 --- a/lib/frenzy_web/templates/account/show.html.eex +++ b/lib/frenzy_web/templates/account/show.html.eex @@ -3,4 +3,30 @@ Change Password -Change Fever Password \ No newline at end of file +Change Fever Password + +

Approved Clients

+ + + + + + + <%= for {approved, fervor} <- @clients do %> + + + + + <% end %> +
ClientRevoke Access
+ <%= if fervor.website do %> + <%= fervor.client_name %> + <% else %> + <%= fervor.client_name %> + <% end %> + + <%= form_tag Routes.account_path(@conn, :remove_client), method: :post do %> + + <%= submit "Revoke" %> + <% end %> +
\ No newline at end of file