aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2019-02-12 21:28:11 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2019-02-13 19:34:43 +0000
commit90facd359813197060f6c33f2389fce772550fc3 (patch)
tree60ead8a3a69468b99c1f97053552d276085449ff /lib
parent99f955cd9e48ba956da438926dd8626fe43aa3a1 (diff)
downloadpleroma-90facd359813197060f6c33f2389fce772550fc3.tar.gz
user view: add AP C2S oauth endpoints to local user profiles
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/views/user_view.ex26
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/pleroma/web/activity_pub/views/user_view.ex b/lib/pleroma/web/activity_pub/views/user_view.ex
index 15e6c1f68..0d880212e 100644
--- a/lib/pleroma/web/activity_pub/views/user_view.ex
+++ b/lib/pleroma/web/activity_pub/views/user_view.ex
@@ -15,6 +15,20 @@ defmodule Pleroma.Web.ActivityPub.UserView do
import Ecto.Query
+ def render("endpoints.json", %{user: %{local: true} = _user}) do
+ %{
+ "oauthAuthorizationEndpoint" => "#{Pleroma.Web.Endpoint.url()}/oauth/authorize",
+ "oauthTokenEndpoint" => "#{Pleroma.Web.Endpoint.url()}/oauth/token"
+ }
+ |> Map.merge(render("endpoints.json", nil))
+ end
+
+ def render("endpoints.json", _) do
+ %{
+ "sharedInbox" => "#{Pleroma.Web.Endpoint.url()}/inbox"
+ }
+ end
+
# the instance itself is not a Person, but instead an Application
def render("user.json", %{user: %{nickname: nil} = user}) do
{:ok, user} = WebFinger.ensure_keys_present(user)
@@ -22,6 +36,8 @@ defmodule Pleroma.Web.ActivityPub.UserView do
public_key = :public_key.pem_entry_encode(:SubjectPublicKeyInfo, public_key)
public_key = :public_key.pem_encode([public_key])
+ endpoints = render("endpoints.json", %{user: user})
+
%{
"id" => user.ap_id,
"type" => "Application",
@@ -37,9 +53,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do
"owner" => user.ap_id,
"publicKeyPem" => public_key
},
- "endpoints" => %{
- "sharedInbox" => "#{Pleroma.Web.Endpoint.url()}/inbox"
- }
+ "endpoints" => endpoints
}
|> Map.merge(Utils.make_json_ld_header())
end
@@ -50,6 +64,8 @@ defmodule Pleroma.Web.ActivityPub.UserView do
public_key = :public_key.pem_entry_encode(:SubjectPublicKeyInfo, public_key)
public_key = :public_key.pem_encode([public_key])
+ endpoints = render("endpoints.json", %{user: user})
+
%{
"id" => user.ap_id,
"type" => "Person",
@@ -67,9 +83,7 @@ defmodule Pleroma.Web.ActivityPub.UserView do
"owner" => user.ap_id,
"publicKeyPem" => public_key
},
- "endpoints" => %{
- "sharedInbox" => "#{Pleroma.Web.Endpoint.url()}/inbox"
- },
+ "endpoints" => endpoints,
"icon" => %{
"type" => "Image",
"url" => User.avatar_url(user)