diff options
author | Ivan Tashkinov <ivantashkinov@gmail.com> | 2019-02-20 17:27:41 +0300 |
---|---|---|
committer | Ivan Tashkinov <ivantashkinov@gmail.com> | 2019-02-20 17:27:41 +0300 |
commit | b574d97c2ee5ea926342b6ef00d9c22c1cc7ebdd (patch) | |
tree | 3e71afab323f4677b142ed6e9f45e6ecab226b1e /lib | |
parent | 6fe7acd58ecf2e12bc03499ba43351ff111d4385 (diff) | |
download | pleroma-b574d97c2ee5ea926342b6ef00d9c22c1cc7ebdd.tar.gz |
[#468] Added support for `push` OAuth scope (Mastodon 2.4+).
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/mastodon_api/mastodon_api_controller.ex | 12 | ||||
-rw-r--r-- | lib/pleroma/web/router.ex | 8 |
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex index d484351e9..17b95eb44 100644 --- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex +++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex @@ -1273,15 +1273,25 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do defp get_or_make_app() do find_attrs = %{client_name: @local_mastodon_name, redirect_uris: "."} + scopes = ["read", "write", "follow", "push"] with %App{} = app <- Repo.get_by(App, find_attrs) do + {:ok, app} = + if app.scopes == scopes do + {:ok, app} + else + app + |> Ecto.Changeset.change(%{scopes: scopes}) + |> Repo.update() + end + {:ok, app} else _e -> cs = App.register_changeset( %App{}, - Map.put(find_attrs, :scopes, ["read", "write", "follow"]) + Map.put(find_attrs, :scopes, scopes) ) Repo.insert(cs) diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index 562e24ad9..559d3aa0c 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -93,6 +93,10 @@ defmodule Pleroma.Web.Router do plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["follow"]}) end + pipeline :oauth_push do + plug(Pleroma.Plugs.OAuthScopesPlug, %{scopes: ["push"]}) + end + pipeline :well_known do plug(:accepts, ["json", "jrd+json", "xml", "xrd+xml"]) end @@ -290,6 +294,10 @@ defmodule Pleroma.Web.Router do post("/domain_blocks", MastodonAPIController, :block_domain) delete("/domain_blocks", MastodonAPIController, :unblock_domain) + end + + scope [] do + pipe_through(:oauth_push) post("/push/subscription", MastodonAPIController, :create_push_subscription) get("/push/subscription", MastodonAPIController, :get_push_subscription) |