Current section

Files

Jump to
potionx lib potionx middleware user_required_middleware.ex
Raw

lib/potionx/middleware/user_required_middleware.ex

defmodule Potionx.Middleware.UserRequired do
@behaviour Absinthe.Middleware
def call(%{context: %Potionx.Context.Service{session: %{user: %{id: _}}}} = res, _opts) do
res
end
def call(res, opts) do
opts = opts || %{exceptions: []}
Enum.member?(
opts.exceptions,
Absinthe.Resolution.path(res)
|> Enum.at(0)
|> Absinthe.Adapter.LanguageConventions.to_internal_name(nil)
|> String.to_existing_atom
)
|> if do
res
else
res
|> Absinthe.Resolution.put_result({:error, "unauthorized"})
end
end
end