cartodb/app/controllers/carto/api/organizations_controller.rb
2020-06-15 10:58:47 +08:00

36 lines
1.3 KiB
Ruby

require_relative './user_presenter'
module Carto
module Api
class OrganizationsController < ::Api::ApplicationController
include OrganizationsHelper
include PagedSearcher
include Carto::ControllerHelper
ssl_required :users
before_filter :load_organization, :load_group
rescue_from Carto::ParamInvalidError, with: :rescue_from_carto_error
VALID_ORDER_PARAMS = [:username, :updated_at].freeze
def users
page, per_page, order, = page_per_page_order_params(VALID_ORDER_PARAMS, default_per_page: 50,
default_order: :username)
query = params[:q]
users_query = [@group, @organization].compact.first.users
users_query = users_query.where('(username like ? or email like ?)', "%#{query}%", "#{query}") if query
total_user_entries = users_query.count
users_query = users_query.offset(( page - 1 ) * per_page ).limit(per_page).order(order)
users = users_query.all
render_jsonp({ users: users.map { |u|
Carto::Api::UserPresenter.new(u, current_viewer: current_user, fetch_db_size: false).to_poro
}, total_user_entries: total_user_entries, total_entries: users.count })
end
end
end
end