+ def tag_users(conn, %{"nicknames" => nicknames, "tags" => tags}) do
+ with {:ok, _} <- User.tag(nicknames, tags),
+ do: json_response(conn, :no_content, "")
+ end
+
+ def untag_users(conn, %{"nicknames" => nicknames, "tags" => tags}) do
+ with {:ok, _} <- User.untag(nicknames, tags),
+ do: json_response(conn, :no_content, "")
+ end
+
+ def list_users(%{assigns: %{user: admin}} = conn, %{"page" => page_string}) do
+ with {page, _} <- Integer.parse(page_string),
+ users <- User.all(page, @users_page_size),
+ count <- User.count_all_except_one(admin),
+ do:
+ conn
+ |> json(
+ AccountView.render("index.json",
+ users: users,
+ count: count,
+ page_size: @users_page_size
+ )
+ )
+ end
+
+ def search_users(%{assigns: %{user: admin}} = conn, %{"query" => term} = params) do
+ users =
+ User.search(term,
+ query: User.maybe_local_user_query(params["local"] == "true"),
+ resolve: true,
+ for_user: admin,
+ limit: @users_page_size
+ )
+
+ conn
+ |> json(
+ AccountView.render("index.json",
+ users: users,
+ count: length(users),
+ page_size: @users_page_size
+ )
+ )
+ end
+
+ def right_add(conn, %{"permission_group" => permission_group, "nickname" => nickname})
+ when permission_group in ["moderator", "admin"] do