Initial commit
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
require_dependency 'cartodb/errors'
|
||||
|
||||
module Carto
|
||||
module Api
|
||||
|
||||
class GrantablesController < ::Api::ApplicationController
|
||||
include PagedSearcher
|
||||
include Carto::ControllerHelper
|
||||
|
||||
respond_to :json
|
||||
|
||||
ssl_required :index
|
||||
|
||||
before_filter :load_organization
|
||||
|
||||
VALID_ORDER_PARAMS = [:id, :name, :type, :avatar_url, :organization_id, :updated_at].freeze
|
||||
|
||||
def index
|
||||
page, per_page, order, _order_direction = page_per_page_order_params(VALID_ORDER_PARAMS)
|
||||
query = params[:q]
|
||||
|
||||
grantable_query = Carto::GrantableQueryBuilder.new(@organization).with_filter(query)
|
||||
grantables = grantable_query.run(page, per_page, order)
|
||||
total_entries = grantable_query.count
|
||||
|
||||
render_jsonp({
|
||||
grantables: grantables.map { |g| Carto::Api::GrantablePresenter.new(g).to_poro },
|
||||
total_entries: total_entries
|
||||
}, 200)
|
||||
rescue Carto::ParamInvalidError => e
|
||||
render json: { errors: e.message }, status: e.status
|
||||
rescue StandardError => e
|
||||
CartoDB.notify_exception(e, { params: params })
|
||||
render json: { errors: e.message }, status: 500
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def load_organization
|
||||
@organization = Carto::Organization.where(id: params['organization_id']).first
|
||||
render json: { errors: "Organization #{params['organization_id']} not found" }, status: 404 unless @organization
|
||||
render json: { errors: "You don't belong to organization #{params['organization_id']}" }, status: 400 unless current_user.organization_id == @organization.id
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user