浏览代码

[#468] Added support for `push` OAuth scope (Mastodon 2.4+).

tags/v1.1.4
Ivan Tashkinov 5 年前
父节点
当前提交
b574d97c2e
共有 3 个文件被更改,包括 20 次插入2 次删除
  1. +11
    -1
      lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
  2. +8
    -0
      lib/pleroma/web/router.ex
  3. +1
    -1
      test/support/factory.ex

+ 11
- 1
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)


+ 8
- 0
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)


+ 1
- 1
test/support/factory.ex 查看文件

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


正在加载...
取消
保存