aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/admin_api
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2019-09-17 22:19:39 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2019-09-17 22:19:39 +0300
commit76068873dbf9da191dd2487158ca88df198b811a (patch)
tree1eb7ce6ea1e8a9f6fd95a6f9a8c926290ccf97fc /lib/pleroma/web/admin_api
parentefbc2edba17a7ee2d3e15bca5fa4f6cf8b4b5116 (diff)
downloadpleroma-76068873dbf9da191dd2487158ca88df198b811a.tar.gz
[#1234] Defined admin OAuth scopes, refined other scopes. Added tests.
Diffstat (limited to 'lib/pleroma/web/admin_api')
-rw-r--r--lib/pleroma/web/admin_api/admin_api_controller.ex71
1 files changed, 41 insertions, 30 deletions
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex
index 0a508d40e..fa69a23d9 100644
--- a/lib/pleroma/web/admin_api/admin_api_controller.ex
+++ b/lib/pleroma/web/admin_api/admin_api_controller.ex
@@ -24,38 +24,20 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
require Logger
- plug(OAuthScopesPlug, %{scopes: ["read:statuses"]} when action == :list_user_statuses)
-
plug(
OAuthScopesPlug,
- %{scopes: ["write:statuses"]} when action in [:status_update, :status_delete]
+ %{scopes: ["admin:read:accounts", "read:accounts"]}
+ when action in [:list_users, :user_show, :right_get, :invites]
)
plug(
OAuthScopesPlug,
- %{scopes: ["read"]}
+ %{scopes: ["admin:write", "write:accounts"]}
when action in [
- :list_reports,
- :report_show,
- :right_get,
:get_invite_token,
- :invites,
+ :revoke_invite,
+ :email_invite,
:get_password_reset,
- :list_users,
- :user_show,
- :config_show,
- :migrate_to_db,
- :migrate_from_db,
- :list_log
- ]
- )
-
- plug(
- OAuthScopesPlug,
- %{scopes: ["write"]}
- when action in [
- :report_update_state,
- :report_respond,
:user_follow,
:user_unfollow,
:user_delete,
@@ -65,15 +47,44 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
:untag_users,
:right_add,
:right_delete,
- :set_activation_status,
- :relay_follow,
- :relay_unfollow,
- :revoke_invite,
- :email_invite,
- :config_update
+ :set_activation_status
]
)
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["admin:read:reports", "read:reports"]} when action in [:list_reports, :report_show]
+ )
+
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["admin:write:reports", "write:reports"]}
+ when action in [:report_update_state, :report_respond]
+ )
+
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["admin:read:statuses", "read:statuses"]} when action == :list_user_statuses
+ )
+
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["admin:write:statuses", "write:statuses"]}
+ when action in [:status_update, :status_delete]
+ )
+
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["admin:read", "read"]}
+ when action in [:config_show, :migrate_to_db, :migrate_from_db, :list_log]
+ )
+
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["admin:write", "write"]}
+ when action in [:relay_follow, :relay_unfollow, :config_update]
+ )
+
@users_page_size 50
action_fallback(:errors)
@@ -451,7 +462,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
end
end
- @doc "Get a account registeration invite token (base64 string)"
+ @doc "Get a account registration invite token (base64 string)"
def get_invite_token(conn, params) do
options = params["invite"] || %{}
{:ok, invite} = UserInviteToken.create_invite(options)