lib/step_flow/controllers/workflow_status_controller.ex

defmodule StepFlow.WorkflowStatusController do
  use StepFlow, :controller

  require Logger

  alias StepFlow.Controller.Helpers
  alias StepFlow.Workflows.Status

  action_fallback(StepFlow.FallbackController)

  def list(%Plug.Conn{assigns: %{current_user: user}} = conn, _params) do
    status =
      Status.StateEnum.__valid_values__()
      |> Enum.filter(fn value -> is_bitstring(value) end)

    if Helpers.has_right?("workflow", user, "view") do
      conn
      |> json(status)
    else
      conn
      |> put_status(:forbidden)
      |> json(%{reason: "Forbidden to view workflow status with this identifier"})
    end
  end
end