Skip to content

Commit f9ef19d

Browse files
committed
Replace search for elsewhere usernames with find_by_provider_username function
1 parent 5f25c70 commit f9ef19d

File tree

3 files changed

+8
-18
lines changed

3 files changed

+8
-18
lines changed

app/controllers/achievements_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def award
2323
render_404
2424
else
2525
if @api_access.can_award?(award_params[:badge])
26-
user = User.with_username(award_params[provider], provider)
26+
user = User.find_by_provider_username(award_params[provider], provider)
2727
badge = badge_class_factory(award_params[:badge].to_s).new(user, Date.strptime(award_params[:date], '%m/%d/%Y'))
2828
badge.generate_fact!(award_params[:badge], award_params[provider], provider)
2929
unless user.nil?

app/models/fact.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def tagged?(*required_tags)
5959

6060
def user
6161
service, username = self.owner.split(":")
62-
User.with_username(username, service)
62+
User.find_by_provider_username(username, service)
6363
end
6464
end
6565

app/models/user.rb

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -126,23 +126,13 @@ def near
126126
#TODO Kill
127127
scope :username_in, ->(usernames) { where(["UPPER(username) in (?)", usernames.collect(&:upcase)]) }
128128

129-
#TODO Kill
130-
def self.with_username(username, provider = :username)
129+
def self.find_by_provider_username(username, provider)
131130
return nil if username.nil?
132-
sql_injection_safe_where_clause = case provider.to_s
133-
when 'username', ''
134-
'username'
135-
when 'linkedin'
136-
'linkedin'
137-
when 'twitter'
138-
'twitter'
139-
when 'github'
140-
'github'
141-
else
142-
#A user could malicously pass in a provider, thats why we do the string matching above
143-
raise "Unkown provider type specified, unable to find user by username"
144-
end
145-
where(["UPPER(#{sql_injection_safe_where_clause}) = UPPER(?)", username]).first
131+
return self.find_by_username(username) if provider == ''
132+
unless %w{twitter linkedin github}.include?(provider)
133+
raise "Unkown provider type specified, unable to find user by username"
134+
end
135+
where(["UPPER(#{provider}) = UPPER(?)", username]).first
146136
end
147137

148138
# Todo State machine

0 commit comments

Comments
 (0)