Specify default scope in verify_credentials

Certain Mastodon/Pleroma front ends call verify_credentials to get the
default scope of a new toot.

Currently, Pleroma hardcodes this value to "public".

This patch changes it to the user's default_scope value.
This commit is contained in:
Will Pearson 2018-08-31 20:59:43 -07:00
parent d31bbb1cfe
commit 0c2a0e3551
3 changed files with 28 additions and 3 deletions

View file

@ -68,7 +68,8 @@ def user_info(%User{} = user) do
following_count: length(user.following) - oneself, following_count: length(user.following) - oneself,
note_count: user.info["note_count"] || 0, note_count: user.info["note_count"] || 0,
follower_count: user.info["follower_count"] || 0, follower_count: user.info["follower_count"] || 0,
locked: user.info["locked"] || false locked: user.info["locked"] || false,
default_scope: user.info["default_scope"] || "public"
} }
end end

View file

@ -46,7 +46,7 @@ def render("account.json", %{user: user}) do
fields: [], fields: [],
source: %{ source: %{
note: "", note: "",
privacy: "public", privacy: user_info.default_scope,
sensitive: "false" sensitive: "false"
} }
} }

View file

@ -206,7 +206,19 @@ test "verify_credentials", %{conn: conn} do
|> assign(:user, user) |> assign(:user, user)
|> get("/api/v1/accounts/verify_credentials") |> get("/api/v1/accounts/verify_credentials")
assert %{"id" => id} = json_response(conn, 200) assert %{"id" => id, "source" => %{"privacy" => "public"}} = json_response(conn, 200)
assert id == to_string(user.id)
end
test "verify_credentials default scope unlisted", %{conn: conn} do
user = insert(:user, %{info: %{"default_scope" => "unlisted"}})
conn =
conn
|> assign(:user, user)
|> get("/api/v1/accounts/verify_credentials")
assert %{"id" => id, "source" => %{"privacy" => "unlisted"}} = json_response(conn, 200)
assert id == to_string(user.id) assert id == to_string(user.id)
end end
@ -715,6 +727,18 @@ test "/api/v1/follow_requests/:id/authorize works" do
assert User.following?(other_user, user) == true assert User.following?(other_user, user) == true
end end
test "verify_credentials", %{conn: conn} do
user = insert(:user, %{info: %{"default_scope" => "private"}})
conn =
conn
|> assign(:user, user)
|> get("/api/v1/accounts/verify_credentials")
assert %{"id" => id, "source" => %{"privacy" => "private"}} = json_response(conn, 200)
assert id == to_string(user.id)
end
test "/api/v1/follow_requests/:id/reject works" do test "/api/v1/follow_requests/:id/reject works" do
user = insert(:user, %{info: %{"locked" => true}}) user = insert(:user, %{info: %{"locked" => true}})
other_user = insert(:user) other_user = insert(:user)