Skip to content

Commit b1adc19

Browse files
landongrindheimbegedin
authored andcommitted
Remove JaResource from StripeConnectPlanController (#1028)
1 parent c5cfbfd commit b1adc19

3 files changed

Lines changed: 33 additions & 20 deletions

File tree

lib/code_corps/policy/policy.ex

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ defmodule CodeCorps.Policy do
5050
defp can?(%User{} = current_user, :create, %Role{}, %{}), do: Policy.Role.create?(current_user)
5151
defp can?(%User{} = current_user, :create, %RoleSkill{}, %{}), do: Policy.RoleSkill.create?(current_user)
5252
defp can?(%User{} = current_user, :delete, %RoleSkill{}, %{}), do: Policy.RoleSkill.delete?(current_user)
53+
defp can?(%User{} = current_user, :show, %StripeConnectPlan{} = stripe_connect_plan, %{}),
54+
do: Policy.StripeConnectPlan.show?(current_user, stripe_connect_plan)
55+
defp can?(%User{} = current_user, :create, %StripeConnectPlan{}, %{} = params),
56+
do: Policy.StripeConnectPlan.create?(current_user, params)
5357
defp can?(%User{} = current_user, :create, %Skill{}, %{}), do: Policy.Skill.create?(current_user)
5458
defp can?(%User{} = current_user, :create, %TaskSkill{}, %{} = params), do: Policy.TaskSkill.create?(current_user, params)
5559
defp can?(%User{} = current_user, :delete, %TaskSkill{} = task_skill, %{}), do: Policy.TaskSkill.delete?(current_user, task_skill)
@@ -94,9 +98,6 @@ defmodule CodeCorps.Policy do
9498

9599
def can?(%User{} = user, :create, Role), do: Policy.Role.create?(user)
96100

97-
def can?(%User{} = user, :show, %StripeConnectPlan{} = stripe_connect_plan), do: Policy.StripeConnectPlan.show?(user, stripe_connect_plan)
98-
def can?(%User{} = user, :create, %Changeset{ data: %StripeConnectPlan{}} = changeset), do: Policy.StripeConnectPlan.create?(user, changeset)
99-
100101
def can?(%User{} = user, :show, %StripeConnectSubscription{} = stripe_connect_subscription), do: Policy.StripeConnectSubscription.show?(user, stripe_connect_subscription)
101102
def can?(%User{} = user, :create, %Changeset{ data: %StripeConnectSubscription{}} = changeset), do: Policy.StripeConnectSubscription.create?(user, changeset)
102103

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
defmodule CodeCorps.Policy.StripeConnectPlan do
2-
import CodeCorps.Policy.Helpers,
3-
only: [get_project: 1, owned_by?: 2]
2+
import CodeCorps.Policy.Helpers, only: [get_project: 1, owned_by?: 2]
43

54
alias CodeCorps.{StripeConnectPlan, User}
65

7-
def show?(%User{} = user, %StripeConnectPlan{} = plan),
8-
do: plan |> get_project |> owned_by?(user)
9-
def create?(%User{} = user, %Ecto.Changeset{} = changeset),
10-
do: changeset |> get_project |> owned_by?(user)
6+
@spec show?(User.t, StripeConnectPlan.t) :: boolean
7+
def show?(%User{} = user, %StripeConnectPlan{} = plan) do
8+
plan |> get_project |> owned_by?(user)
9+
end
10+
11+
@spec create?(User.t, map) :: boolean
12+
def create?(%User{} = user, %{} = params) do
13+
params |> get_project |> owned_by?(user)
14+
end
1115
end

lib/code_corps_web/controllers/stripe_connect_plan_controller.ex

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,29 @@
11
defmodule CodeCorpsWeb.StripeConnectPlanController do
22
use CodeCorpsWeb, :controller
3-
use JaResource
43

5-
alias CodeCorps.StripeConnectPlan
4+
alias CodeCorps.{StripeConnectPlan, User}
65
alias CodeCorps.StripeService.StripeConnectPlanService
76

8-
plug :load_and_authorize_changeset, model: StripeConnectPlan, only: [:create]
9-
plug :load_and_authorize_resource, model: StripeConnectPlan, only: [:show]
10-
plug JaResource
7+
action_fallback CodeCorpsWeb.FallbackController
8+
plug CodeCorpsWeb.Plug.DataToAttributes
9+
plug CodeCorpsWeb.Plug.IdsToIntegers
1110

12-
@spec model :: module
13-
def model, do: CodeCorps.StripeConnectPlan
11+
@spec show(Conn.t, map) :: Conn.t
12+
def show(%Conn{} = conn, %{"id" => id} = params) do
13+
with %User{} = current_user <- conn |> Guardian.Plug.current_resource,
14+
%StripeConnectPlan{} = stripe_platform_plan <- StripeConnectPlan |> Repo.get(id),
15+
{:ok, :authorized} <- current_user |> Policy.authorize(:show, stripe_platform_plan, params) do
16+
conn |> render("show.json-api", data: stripe_platform_plan)
17+
end
18+
end
1419

15-
def handle_create(conn, attributes) do
16-
attributes
17-
|> StripeConnectPlanService.create
18-
|> handle_create_result(conn)
20+
@spec create(Plug.Conn.t, map) :: Conn.t
21+
def create(%Conn{} = conn, %{} = params) do
22+
with %User{} = current_user <- conn |> Guardian.Plug.current_resource,
23+
{:ok, :authorized} <- current_user |> Policy.authorize(:create, %StripeConnectPlan{}, params),
24+
{:ok, %StripeConnectPlan{} = stripe_platform_plan} <- StripeConnectPlanService.create(params) |> handle_create_result(conn) do
25+
conn |> put_status(:created) |> render("show.json-api", data: stripe_platform_plan)
26+
end
1927
end
2028

2129
defp handle_create_result({:error, :project_not_ready}, conn) do

0 commit comments

Comments
 (0)