我正在尝试使用必须由安全角色保护的特定功能来实现Web应用程序。我具有有效的身份验证,但无法获得权限。我尝试遵循How do you restrict permissions to a specific action with guardian and 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?
不包含有关该用户的任何用户信息。
我不知道如何将所有这些缝合在一起。