summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-07-12 21:57:52 -0500
committerAlex Gleason <alex@alexgleason.me>2021-07-12 21:57:52 -0500
commit9bc1e79c5675efb70e45b63f6530194888b182de (patch)
tree2059ce2455f09dee746ffee49a18a6577abd0eea /lib
parentb221d77a6da07c684bdbc63ddf4500e0d7ffeae8 (diff)
downloadpleroma-9bc1e79c5675efb70e45b63f6530194888b182de.tar.gz
pleroma-9bc1e79c5675efb70e45b63f6530194888b182de.zip
Moderators: add UserIsStaffPlug
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/plugs/user_is_staff_plug.ex23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/pleroma/web/plugs/user_is_staff_plug.ex b/lib/pleroma/web/plugs/user_is_staff_plug.ex
new file mode 100644
index 000000000..49c2d9cca
--- /dev/null
+++ b/lib/pleroma/web/plugs/user_is_staff_plug.ex
@@ -0,0 +1,23 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.Plugs.UserIsStaffPlug do
+ import Pleroma.Web.TranslationHelpers
+ import Plug.Conn
+
+ alias Pleroma.User
+
+ def init(options) do
+ options
+ end
+
+ def call(%{assigns: %{user: %User{is_admin: true}}} = conn, _), do: conn
+ def call(%{assigns: %{user: %User{is_moderator: true}}} = conn, _), do: conn
+
+ def call(conn, _) do
+ conn
+ |> render_error(:forbidden, "User is not a staff member.")
+ |> halt()
+ end
+end