Как сделать контроллеры / маршруты доступными с определенными разрешениями с помощью Phoenix Guardian - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь реализовать веб-приложение с определенными функциями, которые должны быть защищены ролями безопасности.У меня есть рабочая аутентификация, но я не могу получить разрешения на работу.Я попытался после этого, Как вы ограничиваете разрешения для определенного действия с помощью guardian и phoenix , но он не дает полного примера.

У меня есть следующая реализация Guardian.

defmodule FireballApp.Guardian do
  use Guardian, otp_app: :fireball_app

  alias FireballApp.Accounts

  def subject_for_token(user, _claims) do
    {:ok, to_string(user.id)}
  end

  def subject_for_token(_, _) do
    {:error, :reason_for_error}
  end

  def resource_from_claims(%{"sub" => id}) do
    case Accounts.get_user!(id) do
      d when is_nil(d) ->  {:error, :resource_not_found}
      user -> {:ok, user}
    end
  end

  def decode_permissions_from_claims(claims) do
    nil
  end

  def all_permissions?(status, roles) do
    nil
  end
end

Я поместил эту строку штекера в начало одного из моих безопасных контроллеров.

plug Guardian.Permissions.Bitwise, ensure: %{admin: [:lookups_edit]}

Эта строка вызывает мою реализацию Guardian, но я не знаю, как ее заполнить.Decode_permissions_from_claims содержит информацию о пользователе, но не знает, какие роли проверять.Но all_permissions? не содержит никакой информации о пользователе.

Я не знаю, как сшить все это вместе.

...