ash/test/support/policy_field/resources/post.ex

68 lines
1.2 KiB
Elixir
Raw Normal View History

defmodule Ash.Test.Support.PolicyField.Post do
@moduledoc false
use Ash.Resource,
domain: Ash.Test.Support.PolicyField.Domain,
data_layer: Ash.DataLayer.Ets,
authorizers: [Ash.Policy.Authorizer]
ets do
private? true
end
actions do
default_accept :*
defaults [:read, :destroy, create: :*, update: :*]
end
attributes do
uuid_primary_key :id
attribute :internal_status, :string do
public?(false)
end
attribute :title, :string do
public?(true)
end
attribute :description, :string do
public?(true)
end
end
relationships do
belongs_to :representative, Ash.Test.Support.PolicyField.User do
public?(true)
allow_nil? false
end
belongs_to :reporter, Ash.Test.Support.PolicyField.User do
public?(true)
allow_nil? false
end
end
policies do
policy always() do
authorize_if always()
end
end
field_policies do
private_fields :include
field_policy :internal_status do
authorize_if relates_to_actor_via(:representative)
authorize_if relates_to_actor_via(:reporter)
end
field_policy :reporter_id do
forbid_if always()
end
field_policy :* do
authorize_if always()
end
end
end