Skip to main content

lib/permit_ex/absinthe/require_permission.ex

if Code.ensure_loaded?(Absinthe.Resolution) do
  defmodule PermitEx.Absinthe.RequirePermission do
    @moduledoc """
    Absinthe middleware that requires a single permission.

        middleware PermitEx.Absinthe.RequirePermission, "orders:manage"
    """

    @behaviour Absinthe.Middleware

    @impl Absinthe.Middleware
    def call(resolution, permission) when is_binary(permission) or is_atom(permission) do
      PermitEx.Absinthe.RequireAuthorization.call(resolution, permission: permission)
    end
  end
end