36 lines
773 B
Ruby
36 lines
773 B
Ruby
|
module Carto
|
||
|
module Api
|
||
|
class GrantablePresenter
|
||
|
|
||
|
def initialize(grantable)
|
||
|
@grantable = grantable
|
||
|
end
|
||
|
|
||
|
def to_poro
|
||
|
{
|
||
|
id: @grantable.id,
|
||
|
type: @grantable.type,
|
||
|
name: @grantable.name,
|
||
|
avatar_url: @grantable.avatar_url,
|
||
|
model: model_presenter.to_poro
|
||
|
}
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def model_presenter
|
||
|
case @grantable.type
|
||
|
when 'user'
|
||
|
Carto::Api::UserPresenter.new(Carto::User.find(@grantable.id), fetch_groups: true)
|
||
|
when 'group'
|
||
|
Carto::Api::GroupPresenter.new(Carto::Group.find(@grantable.id), fetch_users: true)
|
||
|
else
|
||
|
raise "Unknown grantable type #{@grantable.type}"
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|
||
|
end
|