Browse Source

Moderators: add UserIsStaffPlug

moderators
Alex Gleason 3 years ago
parent
commit
9bc1e79c56
No known key found for this signature in database GPG Key ID: 7211D1F99744FBB7
2 changed files with 70 additions and 0 deletions
  1. +23
    -0
      lib/pleroma/web/plugs/user_is_staff_plug.ex
  2. +47
    -0
      test/pleroma/web/plugs/user_is_staff_plug_test.exs

+ 23
- 0
lib/pleroma/web/plugs/user_is_staff_plug.ex View File

@@ -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

+ 47
- 0
test/pleroma/web/plugs/user_is_staff_plug_test.exs View File

@@ -0,0 +1,47 @@
# 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.UserIsStaffPlugTest do
use Pleroma.Web.ConnCase, async: true

alias Pleroma.Web.Plugs.UserIsStaffPlug
import Pleroma.Factory

test "accepts a user that is an admin" do
user = insert(:user, is_admin: true)

conn = assign(build_conn(), :user, user)

ret_conn = UserIsStaffPlug.call(conn, %{})

assert conn == ret_conn
end

test "accepts a user that is a moderator" do
user = insert(:user, is_moderator: true)

conn = assign(build_conn(), :user, user)

ret_conn = UserIsStaffPlug.call(conn, %{})

assert conn == ret_conn
end

test "denies a user that isn't a staff member" do
user = insert(:user)

conn =
build_conn()
|> assign(:user, user)
|> UserIsStaffPlug.call(%{})

assert conn.status == 403
end

test "denies when a user isn't set" do
conn = UserIsStaffPlug.call(build_conn(), %{})

assert conn.status == 403
end
end

Loading…
Cancel
Save