X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fadmin_api%2Fadmin_api_controller.ex;h=0bd85e0b65ce3fedb16d0191956f2b7fcb790550;hb=4976a8b05f359cd32b37612727f81c89df85d651;hp=5f6c565aedf3f8ef604147b6936c550622b1418c;hpb=e0b0fde713e70e9d64d8e294776bd060b88a9cad;p=akkoma diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 5f6c565ae..0bd85e0b6 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -3,6 +3,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do alias Pleroma.{User, Repo} alias Pleroma.Web.ActivityPub.Relay + import Pleroma.Web.ControllerHelper, only: [json_response: 3] + require Logger action_fallback(:errors) @@ -10,7 +12,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do def user_delete(conn, %{"nickname" => nickname}) do user = User.get_by_nickname(nickname) - if user[:local] == true do + if user.local == true do User.delete(user) else User.delete(user) @@ -20,46 +22,64 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do |> json(nickname) end - def user_create(conn, %{ - user: %{"nickname" => nickname, "email" => email, "password" => password} = user - }) do - new_user = %User{ + def user_create( + conn, + %{"nickname" => nickname, "email" => email, "password" => password} + ) do + new_user = %{ nickname: nickname, - name: user.name || nickname, + name: nickname, email: email, password: password, password_confirmation: password, - bio: user.bio || "." + bio: "." } User.register_changeset(%User{}, new_user) - - Repo.insert!(new_user) + |> Repo.insert!() conn |> json(new_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 = - user.info + %{} |> Map.put("is_" <> permission_group, true) - cng = User.info_changeset(user, %{info: info}) + info_cng = User.Info.admin_api_update(user.info, info) + + cng = + Ecto.Changeset.change(user) + |> Ecto.Changeset.put_embed(:info, info_cng) + {:ok, user} = User.update_and_set_cache(cng) conn - |> json(user.info) + |> json(info) end def right_get(conn, %{"nickname" => nickname}) do user = User.get_by_nickname(nickname) conn - |> json(user.info) + |> json(%{ + is_moderator: user.info.is_moderator, + is_admin: user.info.is_admin + }) end def right_add(conn, _) do @@ -84,14 +104,19 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do user = User.get_by_nickname(nickname) info = - user.info + %{} |> Map.put("is_" <> permission_group, false) - cng = User.info_changeset(user, %{info: info}) + info_cng = User.Info.admin_api_update(user.info, info) + + cng = + Ecto.Changeset.change(user) + |> Ecto.Changeset.put_embed(:info, info_cng) + {:ok, user} = User.update_and_set_cache(cng) conn - |> json(user.info) + |> json(info) end end @@ -102,7 +127,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do end def relay_follow(conn, %{"relay_url" => target}) do - status = Relay.follow(target) + {status, message} = Relay.follow(target) if status == :ok do conn @@ -115,7 +140,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do end def relay_unfollow(conn, %{"relay_url" => target}) do - status = Relay.unfollow(target) + {status, message} = Relay.unfollow(target) if status == :ok do conn