38 lines
1.0 KiB
Ruby
38 lines
1.0 KiB
Ruby
module Carto
|
|
module Api
|
|
module Public
|
|
class OauthAppPresenter
|
|
|
|
PRIVATE_ATTRIBUTES = %i(
|
|
id user_id name created_at updated_at client_id client_secret
|
|
redirect_uris icon_url restricted description website_url
|
|
).freeze
|
|
|
|
PUBLIC_ATTRIBUTES = %i(id name created_at updated_at description website_url icon_url).freeze
|
|
|
|
def initialize(oauth_app, user: nil)
|
|
@oauth_app = oauth_app
|
|
@user = user
|
|
end
|
|
|
|
def to_hash(private_data: false)
|
|
private_data ? to_private_hash : to_public_hash
|
|
end
|
|
|
|
private
|
|
|
|
def to_private_hash
|
|
@oauth_app.slice(*PRIVATE_ATTRIBUTES).merge(username: @oauth_app.user.username)
|
|
end
|
|
|
|
def to_public_hash
|
|
oauth_app_user = @oauth_app.oauth_app_users.where(user: @user).first
|
|
scopes = Carto::OauthProvider::Scopes.scopes_by_category(oauth_app_user&.all_scopes)
|
|
@oauth_app.slice(*PUBLIC_ATTRIBUTES).merge(scopes: scopes)
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|