Skip to content

Commit

Permalink
Merge pull request #266 from chef/sr/pool-608/search-users-by-case-in…
Browse files Browse the repository at this point in the history
…sensitive-email

GET /[email protected] -- compare emails ignoring case
  • Loading branch information
srenatus authored Jun 1, 2017
2 parents 73ed88e + a57b15a commit f56b997
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions lib/chef_zero/endpoints/actors_endpoint.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def get(request)
if value = request.query_params["external_authentication_uid"]
response[2] = filter("external_authentication_uid", value, request, response[2])
elsif value = request.query_params["email"]
response[2] = filter("email", value, request, response[2])
response[2] = filter("email", value, request, response[2], insensitive: true)
end

if request.query_params["verbose"]
Expand Down Expand Up @@ -83,18 +83,22 @@ def post(request)

private

def filter(key, value, request, resp)
def filter(key, value, request, resp, opts = {})
results = parse_json(resp)
new_results = {}
results.each do |name, url|
record = get_data(request, request.rest_path + [ name ], :nil)
if record
record = parse_json(record)
new_results[name] = url if record[key] == value
new_results[name] = url if record[key] && is_equal(record[key], value, opts[:insensitive])
end
end
to_json(new_results)
end

def is_equal(a, b, ignore_case)
ignore_case ? a.casecmp(b).zero? : a == b
end
end
end
end

0 comments on commit f56b997

Please sign in to comment.