aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/pleroma_api/controllers/account_controller.ex
diff options
context:
space:
mode:
authorMaxim Filippov <colixer@gmail.com>2019-10-07 15:41:41 +0300
committerMaxim Filippov <colixer@gmail.com>2019-10-07 15:41:41 +0300
commit35068baf65f1be9ac4e5ae8d08222244ae823fcc (patch)
tree0ed0b88fd100fb3df83400c147ab9a6a88d53c73 /lib/pleroma/web/pleroma_api/controllers/account_controller.ex
parent7aceaa517be7b109a9acc15fb4914535b536b66c (diff)
parent0a99f1e8c5551dcf170722e5087a0401b2d907af (diff)
downloadpleroma-35068baf65f1be9ac4e5ae8d08222244ae823fcc.tar.gz
Merge branch 'develop' into feature/reports-groups-and-multiple-state-update
Diffstat (limited to 'lib/pleroma/web/pleroma_api/controllers/account_controller.ex')
-rw-r--r--lib/pleroma/web/pleroma_api/controllers/account_controller.ex25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex
index 63c44086c..9012e2175 100644
--- a/lib/pleroma/web/pleroma_api/controllers/account_controller.ex
+++ b/lib/pleroma/web/pleroma_api/controllers/account_controller.ex
@@ -9,6 +9,7 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do
only: [json_response: 3, add_link_headers: 2, assign_account_by_id: 2]
alias Ecto.Changeset
+ alias Pleroma.Plugs.OAuthScopesPlug
alias Pleroma.Plugs.RateLimiter
alias Pleroma.User
alias Pleroma.Web.ActivityPub.ActivityPub
@@ -17,6 +18,30 @@ defmodule Pleroma.Web.PleromaAPI.AccountController do
require Pleroma.Constants
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["follow", "write:follows"]} when action in [:subscribe, :unsubscribe]
+ )
+
+ plug(
+ OAuthScopesPlug,
+ %{scopes: ["write:accounts"]}
+ # Note: the following actions are not permission-secured in Mastodon:
+ when action in [
+ :update_avatar,
+ :update_banner,
+ :update_background
+ ]
+ )
+
+ plug(OAuthScopesPlug, %{scopes: ["read:favourites"]} when action == :favourites)
+
+ # An extra safety measure for possible actions not guarded by OAuth permissions specification
+ plug(
+ Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug
+ when action != :confirmation_resend
+ )
+
plug(RateLimiter, :account_confirmation_resend when action == :confirmation_resend)
plug(:assign_account_by_id when action in [:favourites, :subscribe, :unsubscribe])
plug(:put_view, Pleroma.Web.MastodonAPI.AccountView)