+ def user_delete(conn, %{"nickname" => nickname}) do
+ User.get_by_nickname(nickname)
+ |> User.delete()
+
+ conn
+ |> json(nickname)
+ end
+
+ def user_create(
+ conn,
+ %{"nickname" => nickname, "email" => email, "password" => password}
+ ) do
+ user_data = %{
+ nickname: nickname,
+ name: nickname,
+ email: email,
+ password: password,
+ password_confirmation: password,
+ bio: "."
+ }
+
+ changeset = User.register_changeset(%User{}, user_data, confirmed: true)
+ {:ok, user} = User.register(changeset)
+
+ conn
+ |> json(user.nickname)
+ end
+
+ 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 right_add(conn, %{"permission_group" => permission_group, "nickname" => nickname})
+ when permission_group in ["moderator", "admin"] do
+ user = User.get_by_nickname(nickname)
+
+ info =
+ %{}
+ |> Map.put("is_" <> permission_group, true)
+
+ info_cng = User.Info.admin_api_update(user.info, info)
+
+ cng =
+ user
+ |> Ecto.Changeset.change()
+ |> Ecto.Changeset.put_embed(:info, info_cng)
+
+ {:ok, _user} = User.update_and_set_cache(cng)
+
+ json(conn, info)
+ end
+
+ def right_add(conn, _) do
+ conn
+ |> put_status(404)
+ |> json(%{error: "No such permission_group"})