FEATURE: allow restricting API keys to a particular range

This commit is contained in:
Sam
2014-11-20 15:21:49 +11:00
parent 4aec3c8c4c
commit a9cda0f947
2 changed files with 27 additions and 2 deletions

View File

@ -107,12 +107,16 @@ class Auth::DefaultCurrentUserProvider
api_key = ApiKey.where(key: api_key_value).includes(:user).first
if api_key
api_username = request["api_username"]
if api_key.allowed_ips.present? && !api_key.allowed_ips.any?{|ip| ip.include?(request.ip)}
Rails.logger.warn("Unauthorized API access: #{api_username} ip address: #{request.ip}")
return nil
end
if api_key.user
api_key.user if !api_username || (api_key.user.username_lower == api_username.downcase)
elsif api_username
User.find_by(username_lower: api_username.downcase)
else
nil
end
end
end