Я пытаюсь реализовать веб-приложение с определенными функциями, которые должны быть защищены ролями безопасности.У меня есть рабочая аутентификация, но я не могу получить разрешения на работу.Я попытался после этого, Как вы ограничиваете разрешения для определенного действия с помощью 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?
не содержит никакой информации о пользователе.
Я не знаю, как сшить все это вместе.