Skip to content
Snippets Groups Projects

Make getting a user by the username case insensitive

Merged William George requested to merge awgeorge1/gitlab-ce:master into master
All threads resolved!
Compare and Show latest version
5 files
+ 17
17
Compare changes
  • Side-by-side
  • Inline
Files
5
+ 41
11
@@ -7,22 +7,52 @@
# times we may want to exclude blocked user. By using this finder (and extending
# it whenever necessary) we can keep this logic in one place.
class UserFinder
attr_reader :params
def initialize(username_or_id)
@username_or_id = username_or_id
end
# Tries to find a User by id, returning nil if none could be found.
def find_by_id
User.find_by_id(@username_or_id)
end
def initialize(params)
@params = params
# Tries to find a User by id, raising a `ActiveRecord::RecordNotFound` if it could
# not be found.
def find_by_id!
User.find(@username_or_id)
end
# Tries to find a User, returning nil if none could be found.
# rubocop: disable CodeReuse/ActiveRecord
def execute
User.find_by(id: params[:id])
# Tries to find a User by username, returning nil if none could be found.
def find_by_username
User.find_by_username(@username_or_id)
end
# rubocop: enable CodeReuse/ActiveRecord
# Tries to find a User, raising a `ActiveRecord::RecordNotFound` if it could
# Tries to find a User by username, raising a `ActiveRecord::RecordNotFound` if it could
# not be found.
def execute!
User.find(params[:id])
def find_by_username!
User.find_by_username!(@username_or_id)
end
# Tries to find a User by username or id, returning nil if none could be found.
def find_by_id_or_username
if input_is_id?
find_by_id
else
find_by_username
end
end
# Tries to find a User by username or id, raising a `ActiveRecord::RecordNotFound` if it could
# not be found.
def find_by_id_or_username!
if input_is_id?
find_by_id!
else
find_by_username!
end
end
def input_is_id?
@username_or_id.is_a?(Numeric) || @username_or_id =~ /^\d+$/
end
end
Loading