File tree 3 files changed +8
-18
lines changed
3 files changed +8
-18
lines changed Original file line number Diff line number Diff line change @@ -23,7 +23,7 @@ def award
23
23
render_404
24
24
else
25
25
if @api_access . can_award? ( award_params [ :badge ] )
26
- user = User . with_username ( award_params [ provider ] , provider )
26
+ user = User . from_elsewhere_username ( award_params [ provider ] , provider )
27
27
badge = badge_class_factory ( award_params [ :badge ] . to_s ) . new ( user , Date . strptime ( award_params [ :date ] , '%m/%d/%Y' ) )
28
28
badge . generate_fact! ( award_params [ :badge ] , award_params [ provider ] , provider )
29
29
unless user . nil?
Original file line number Diff line number Diff line change @@ -59,7 +59,7 @@ def tagged?(*required_tags)
59
59
60
60
def user
61
61
service , username = self . owner . split ( ":" )
62
- User . with_username ( username , service )
62
+ User . from_elsewhere_username ( username , service )
63
63
end
64
64
end
65
65
Original file line number Diff line number Diff line change @@ -126,23 +126,13 @@ def near
126
126
#TODO Kill
127
127
scope :username_in , -> ( usernames ) { where ( [ "UPPER(username) in (?)" , usernames . collect ( &:upcase ) ] ) }
128
128
129
- #TODO Kill
130
- def self . with_username ( username , provider = :username )
129
+ def self . from_elsewhere_username ( username , provider )
131
130
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
146
136
end
147
137
148
138
# Todo State machine
You can’t perform that action at this time.
0 commit comments