X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpleroma%2Fweb%2Fadmin_api%2Fadmin_api_controller.ex;h=360ce07327ee0c5b661b393930553f699c5d8cf0;hb=ccd6b1956d11a2a7a738dd87770ac109114d4366;hp=a6f8cd4d31e9d6cfb0707e73115cb5cf24f958ae;hpb=5732eef16b74e5f5c56415c4bc8fb6e21d21a329;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 a6f8cd4d3..360ce0732 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -7,7 +7,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do action_fallback(:errors) - def user_delete(conn, %{nickname: nickname}) do + def user_delete(conn, %{"nickname" => nickname}) do user = User.get_by_nickname(nickname) if user[:local] == true do @@ -17,13 +17,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do end conn - |> send(200) + |> json(nickname) end - def user_create( - conn, - %{user: %{nickname: nickname, email: email, password: password} = user} - ) do + def user_create(conn, %{ + user: %{"nickname" => nickname, "email" => email, "password" => password} = user + }) do new_user = %User{ nickname: nickname, name: user.name || nickname, @@ -35,38 +34,125 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do User.register_changeset(%User{}, new_user) - Repo.insert!(user) + Repo.insert!(new_user) conn - |> send(200) + |> json(new_user.nickname) end - def relay_follow(conn, %{relay_url: target}) do - :ok = Relay.follow(target) + def right_add(conn, %{"right" => right, "nickname" => nickname}) + when right in ["moderator", "admin"] do + user = User.get_by_nickname(nickname) + + info = + user.info + |> Map.put("is_" <> right, true) + + cng = User.info_changeset(user, %{info: info}) + {:ok, user} = User.update_and_set_cache(cng) conn - |> send(200) + |> json(user.info) end - def relay_unfollow(conn, %{relay_url: target}) do - :ok = Relay.unfollow(target) + def right_get(conn, %{"nickname" => nickname}) do + user = User.get_by_nickname(nickname) + + conn + |> json(user.info) + end + + def right_add(conn, _) do + conn + |> put_status(404) + |> json(%{error: "No such right"}) + end + + def right_delete( + %{assigns: %{user: %User{:nickname => admin_nickname}}} = conn, + %{ + "right" => right, + "nickname" => nickname + } + ) + when right in ["moderator", "admin"] do + if admin_nickname == nickname do + conn + |> put_status(403) + |> json(%{error: "You can't revoke your own admin status."}) + else + user = User.get_by_nickname(nickname) + + info = + user.info + |> Map.put("is_" <> right, false) + + cng = User.info_changeset(user, %{info: info}) + {:ok, user} = User.update_and_set_cache(cng) + + conn + |> json(user.info) + end + end + def right_delete(conn, _) do conn - |> send(200) + |> put_status(404) + |> json(%{error: "No such right"}) end + def relay_follow(conn, %{"relay_url" => target}) do + status = Relay.follow(target) + + if status == :ok do + conn + |> json(target) + else + conn + |> put_status(500) + |> json(target) + end + end + + def relay_unfollow(conn, %{"relay_url" => target}) do + status = Relay.unfollow(target) + + if status == :ok do + conn + |> json(target) + else + conn + |> put_status(500) + |> json(target) + end + end + + @shortdoc "Get a account registeration invite token (base64 string)" def get_invite_token(conn, _params) do - {:ok, token} <- Pleroma.UserInviteToken.create_token() + {:ok, token} = Pleroma.UserInviteToken.create_token() conn - |> puts(token) + |> json(token.token) end - def get_password_reset(conn, %{nickname: nickname}) do + @shortdoc "Get a password reset token (base64 string) for given nickname" + def get_password_reset(conn, %{"nickname" => nickname}) do (%User{local: true} = user) = User.get_by_nickname(nickname) {:ok, token} = Pleroma.PasswordResetToken.create_token(user) conn - |> puts(token) + |> json(token.token) + end + + def errors(conn, {:param_cast, _}) do + conn + |> put_status(400) + |> json("Invalid parameters") + end + + def errors(conn, _) do + conn + |> put_status(500) + |> json("Something went wrong") end end