clever-pillow-79177
10/23/2025, 10:27 PMminiature-optician-85831
10/23/2025, 10:27 PMloud-jewelry-99127
10/28/2025, 10:40 AMclever-pillow-79177
10/28/2025, 5:57 PMloud-jewelry-99127
10/29/2025, 9:12 AMloud-jewelry-99127
10/29/2025, 9:13 AMloud-jewelry-99127
10/29/2025, 9:15 AMclever-pillow-79177
10/29/2025, 9:16 AMloud-jewelry-99127
10/29/2025, 9:29 AMruby
# app/avo/resources/user.rb
class Avo::Resources::User < Avo::BaseResource
self.discreet_information = [
{
label: -> { record.persisted? ? "GET #{avo_api.resources_v1_user_path(record)}" : nil },
url: -> { record.persisted? ? avo_api.resources_v1_user_path(record) : nil },
url_target: "_blank",
}
]
self.index_controls = -> do
link_to "GET #{avo_api.resources_v1_users_path}", avo_api.resources_v1_users_path, target: "_blank"
default_controls
end
self.search = {
query: -> {
query.order(created_at: :desc).where("last_name LIKE ?", "%#{q}%")
.or(query.order(created_at: :desc).where("first_name LIKE ?", "%#{q}%"))
.or(query.order(created_at: :desc).where("id = ?", q))
},
item: -> do
{
title: record.name,
description: "#{record.email}",
image_url: "https://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(record.email.strip.downcase)}?s=100 ",
image_format: :circle
}
end
}
def fields
discover_columns
end
def form_fields
discover_columns except: [:created_at, :updated_at]
field :password, as: :password
end
endloud-jewelry-99127
10/29/2025, 9:30 AMruby
# app/controllers/avo/api/resources/v1/users_controller.rb
module Avo
module Api
module Resources
module V1
class UsersController < BaseResourcesController
# Add any custom logic for User resources here
#
# Example: Override methods to customize behavior
# def index
# super
# # Add custom logic after calling super
# end
#
# def show
# super
# # Add custom logic for show action
# end
end
end
end
end
endloud-jewelry-99127
10/29/2025, 9:30 AMloud-jewelry-99127
10/29/2025, 9:32 AMloud-jewelry-99127
10/29/2025, 9:32 AMruby
class Avo::Resources::HttpUser < Avo::Core::Resources::Http
self.http_adapter = {
endpoint: Rails.env.production? ? "https://avo-4.avodemo.com/api/resources/v1/users" : "http://localhost:3000/api/resources/v1/users",
# Basic auth example
headers: -> {
{
"Authorization" => "Basic #{Base64.encode64(request.cookies["email_password"] || "avo@avohq.io:secret")}".gsub("\n", "")
}
},
parse_collection: -> {
if raw_response.code == 401
raise Avo::HttpError.new "Unauthorized"
end
raise Avo::HttpError.new response["message"] if response["error"].present?
response["records"]
},
parse_record: -> {
response["record"]
},
parse_count: -> {
response["pagination"]&.dig("total_count")
}
}
self.description = "This is a HttpResource (avo-http_resource) to the Avo::Resources::User endpoints (avo-api)"
self.visible_on_sidebar = false
def fields
field :first_name
field :last_name
field :email
field :created_at
field :updated_at
end
endloud-jewelry-99127
10/29/2025, 9:32 AMloud-jewelry-99127
10/29/2025, 9:33 AMclever-pillow-79177
10/29/2025, 9:50 AMloud-jewelry-99127
10/29/2025, 9:51 AM