Skip to content

Instantly share code, notes, and snippets.

@MartinElvar
Created November 7, 2016 12:34
Show Gist options
  • Save MartinElvar/d5cd6cb2942386a05bac2ec675f07616 to your computer and use it in GitHub Desktop.
Save MartinElvar/d5cd6cb2942386a05bac2ec675f07616 to your computer and use it in GitHub Desktop.
defmodule Users.Types do
use Absinthe.Schema.Notation
import GraphqlHelpers
object :user do
field :id, :id
field :first_name, :string
field :last_name, :string
field :email, :string
field :phone, :string
field :storages, list_of(:storage), do: has_many(Storages.Storage, :user_id)
end
end
defmodule Users.UserResolver do
def one(%{id: id}, %{context: %{current_user: current_user}}) do
user = Users.User.find(id)
cond do
current_user.id == user.id -> {:ok, user}
true -> {:ok, filter_protected_fields(user)}
end
end
def one(%{id: id}, _) do
user = Users.User.find(id) |> filter_protected_fields
{:ok, user}
end
def filter_protected_fields(user) do
protected_fields = ~w(email phone)a
Map.drop(user, protected_fields)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment