admin_api_controller.ex: Create
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Tue, 2 Oct 2018 16:38:16 +0000 (18:38 +0200)
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Sat, 17 Nov 2018 19:25:52 +0000 (20:25 +0100)
lib/pleroma/web/admin_api/admin_api_controller.ex [new file with mode: 0644]
lib/pleroma/web/router.ex

diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex
new file mode 100644 (file)
index 0000000..1618a83
--- /dev/null
@@ -0,0 +1,25 @@
+defmodule Pleroma.Web.AdminAPI.Controller do
+  use Pleroma.Web, :controller
+
+  require Logger
+
+  action_fallback(:errors)
+
+  def user_delete(%{assigns: %{user: user}} = conn, _params) do
+  end
+
+  def user_create(%{assigns: %{user: user}} = conn, _params) do
+  end
+
+  def relay_follow(%{assigns: %{user: user}} = conn, _params) do
+  end
+
+  def relay_unfollow(%{assigns: %{user: user}} = conn, _params) do
+  end
+
+  def user_delete(%{assigns: %{user: user}} = conn, _params) do
+  end
+
+  def user_delete(%{assigns: %{user: user}} = conn, _params) do
+  end
+end
index 4623698064193905b3ec1b02888dcadf6d9aa8d7..1fa2625d0d8249cd068e22567a105fe9275a5990 100644 (file)
@@ -31,6 +31,21 @@ defmodule Pleroma.Web.Router do
     plug(Pleroma.Plugs.EnsureAuthenticatedPlug)
   end
 
+  pipeline :admin_api do
+    plug(:accepts, ["json"])
+    plug(:fetch_session)
+    plug(Pleroma.Plugs.OAuthPlug)
+    plug(Pleroma.Plugs.BasicAuthDecoderPlug)
+    plug(Pleroma.Plugs.UserFetcherPlug)
+    plug(Pleroma.Plugs.SessionAuthenticationPlug)
+    plug(Pleroma.Plugs.LegacyAuthenticationPlug)
+    plug(Pleroma.Plugs.AuthenticationPlug)
+    plug(Pleroma.Plugs.UserEnabledPlug)
+    plug(Pleroma.Plugs.SetUserSessionIdPlug)
+    plug(Pleroma.Plugs.EnsureAuthenticatedPlug)
+    plug(Pleroma.Plugs.UserIsAdminPlug)
+  end
+
   pipeline :mastodon_html do
     plug(:accepts, ["html"])
     plug(:fetch_session)
@@ -79,6 +94,24 @@ defmodule Pleroma.Web.Router do
     get("/emoji", UtilController, :emoji)
   end
 
+  scope "/api/pleroma/admin", Pleroma.Web.AdminAPI do
+    pipe_through(:admin_api)
+    delete("/user", AdminAPIController, :user_delete)
+    post("/user", AdminAPIController, :user_create)
+
+    # Maybe put a "rights" endpoint instead?
+    post("/moderator", AdminAPIController, :moderator_make)
+    delete("/moderator", AdminAPIController, :moderator_unmake)
+    post("/admin", AdminAPIController, :admin_make)
+    delete("/admin", AdminAPIController, :admin_unmake)
+
+    post("/relay", AdminAPIController, :relay_follow)
+    delete("/relay", AdminAPIController, :relay_unfollow)
+
+    get("/invite_token", AdminAPIController, :get_invite_token)
+    get("/password_reset", AdminAPIController, :get_password_reset)
+  end
+
   scope "/", Pleroma.Web.TwitterAPI do
     pipe_through(:pleroma_html)
     get("/ostatus_subscribe", UtilController, :remote_follow)