diff --git a/lib/decentralised_book_index/accounts/user.ex b/lib/decentralised_book_index/accounts/user.ex index 08fbba4..1507668 100644 --- a/lib/decentralised_book_index/accounts/user.ex +++ b/lib/decentralised_book_index/accounts/user.ex @@ -239,6 +239,17 @@ defmodule DecentralisedBookIndex.Accounts.User do filter expr(role == :moderator) end + + read :search do + argument :email, :ci_string do + constraints allow_empty?: true + default "" + end + + filter expr(contains(email, ^arg(:email))) + + pagination offset?: true, default_limit: 10 + end end policies do @@ -246,6 +257,10 @@ defmodule DecentralisedBookIndex.Accounts.User do authorize_if always() end + bypass actor_attribute_equals(:role, :admin) do + authorize_if always() + end + policy always() do forbid_if always() end @@ -276,6 +291,7 @@ defmodule DecentralisedBookIndex.Accounts.User do code_interface do define :list_moderators + define :search, action: :search, args: [:email] define :get_by_id, action: :read, get_by: [:id] define :get_by_email, args: [:email]