user list for moderation of pending users - #877
This commit is contained in:
@@ -332,6 +332,11 @@ defmodule Mobilizon.GraphQL.Schema.UserType do
|
||||
description: "Filter users by current signed-in IP address"
|
||||
)
|
||||
|
||||
arg(:pending_user, :boolean,
|
||||
default_value: false,
|
||||
description: "Filter users by pending or not"
|
||||
)
|
||||
|
||||
arg(:page, :integer, default_value: 1, description: "The page in the paginated users list")
|
||||
arg(:limit, :integer, default_value: 10, description: "The limit of users per page")
|
||||
|
||||
|
||||
@@ -290,6 +290,7 @@ defmodule Mobilizon.Users do
|
||||
@spec list_users(Keyword.t()) :: Page.t(User.t())
|
||||
def list_users(options) do
|
||||
User
|
||||
|> filter_by_pending(Keyword.get(options, :pending_user))
|
||||
|> filter_by_email(Keyword.get(options, :email))
|
||||
|> filter_by_ip(Keyword.get(options, :current_sign_in_ip))
|
||||
|> sort(Keyword.get(options, :sort), Keyword.get(options, :direction))
|
||||
@@ -534,6 +535,11 @@ defmodule Mobilizon.Users do
|
||||
where(User, [u], u.id == ^user_id)
|
||||
end
|
||||
|
||||
@spec filter_by_pending(Ecto.Queryable.t(), Boolean.t() | nil) :: Ecto.Query.t()
|
||||
defp filter_by_pending(query, nil), do: query
|
||||
defp filter_by_pending(query, true), do: where(query, [q], q.role == :pending)
|
||||
defp filter_by_pending(query, false), do: where(query, [q], q.role != :pending)
|
||||
|
||||
@spec filter_by_email(Ecto.Queryable.t(), String.t() | nil) :: Ecto.Query.t()
|
||||
defp filter_by_email(query, nil), do: query
|
||||
defp filter_by_email(query, ""), do: query
|
||||
|
||||
Reference in New Issue
Block a user