Add userinfo oauth endpoint (#32548)

This commit is contained in:
Emelia Smith 2024-10-30 15:38:10 +01:00 committed by GitHub
parent 0a599d08d8
commit e1b7382ea6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 112 additions and 12 deletions

View file

@ -0,0 +1,11 @@
# frozen_string_literal: true
class Oauth::UserinfoController < Api::BaseController
before_action -> { doorkeeper_authorize! :profile }, only: [:show]
before_action :require_user!
def show
@account = current_account
render json: @account, serializer: OauthUserinfoSerializer
end
end

View file

@ -26,6 +26,10 @@ class OauthMetadataPresenter < ActiveModelSerializers::Model
oauth_token_url
end
def userinfo_endpoint
oauth_userinfo_url
end
# As the api_v1_apps route doesn't technically conform to the specification
# for OAuth 2.0 Dynamic Client Registration defined in RFC 7591 we use a
# non-standard property for now to indicate the mastodon specific registration

View file

@ -2,7 +2,7 @@
class OauthMetadataSerializer < ActiveModel::Serializer
attributes :issuer, :authorization_endpoint, :token_endpoint,
:revocation_endpoint, :scopes_supported,
:revocation_endpoint, :userinfo_endpoint, :scopes_supported,
:response_types_supported, :response_modes_supported,
:grant_types_supported, :token_endpoint_auth_methods_supported,
:code_challenge_methods_supported,

View file

@ -0,0 +1,31 @@
# frozen_string_literal: true
class OauthUserinfoSerializer < ActiveModel::Serializer
include RoutingHelper
attributes :iss, :sub, :name, :preferred_username, :profile, :picture
def iss
root_url
end
def sub
ActivityPub::TagManager.instance.uri_for(object)
end
def name
object.display_name
end
def preferred_username
object.username
end
def profile
ActivityPub::TagManager.instance.url_for(object)
end
def picture
full_asset_url(object.avatar_original_url)
end
end