[#468] Added support for push
OAuth scope (Mastodon 2.4+).
This commit is contained in:
parent
6fe7acd58e
commit
b574d97c2e
3 changed files with 20 additions and 2 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -214,7 +214,7 @@ defmodule Pleroma.Factory do
|
|||
%Pleroma.Web.OAuth.App{
|
||||
client_name: "Some client",
|
||||
redirect_uris: "https://example.com/callback",
|
||||
scopes: ["read", "write", "follow"],
|
||||
scopes: ["read", "write", "follow", "push"],
|
||||
website: "https://example.com",
|
||||
client_id: "aaabbb==",
|
||||
client_secret: "aaa;/&bbb"
|
||||
|
|
Loading…
Reference in a new issue