View Source Authorize with AshJsonApi

By default, authorize? in the domain is set to true. To disable authorization entirely for a given domain in graphql, use:

json_api do
  authorize? false
end

This is typically only necessary for testing purposes.

If you are doing authorization, you'll need to provide an actor.

Setting the actor manually

If you are using AshAuthentication, this will be done for you. To set the actor for authorization, you'll need to add an actor key to the conn. Typically, you would have a plug that fetches the current user and uses Ash.PlugHelpers.set_actor/2 to set the actor in the conn (likewise with Ash.PlugHelpers.set_tenant/2).

defmodule MyAppWeb.Router do
  pipeline :api do
    # ...
    plug :get_actor_from_token
  end

  def get_actor_from_token(conn, _opts) do
     with ["" <> token] <- get_req_header(conn, "authorization"),
         {:ok, user, _claims} <- MyApp.Guardian.resource_from_token(token) do
      conn
      |> Ash.PlugHelpers.set_actor(user)
    else
    _ -> conn
    end
  end
end