Skip to content

Commit 64bb2dc

Browse files
authored
Merge pull request rails#52531 from n-studio/allow-bots
Let allow_browser allow bots
2 parents 7e0df2f + b7f2b4c commit 64bb2dc

File tree

3 files changed

+18
-1
lines changed

3 files changed

+18
-1
lines changed

actionpack/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
* Allow bots to ignore `allow_browser`.
2+
3+
*Matthew Nguyen*
4+
15
* Deprecate drawing routes with hash key paths to make routing faster.
26

37
```ruby

actionpack/lib/action_controller/metal/allow_browser.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,17 @@ def user_agent_version_reported?
8585
end
8686

8787
def unsupported_browser?
88-
version_guarded_browser? && version_below_minimum_required?
88+
version_guarded_browser? && version_below_minimum_required? && !bot?
8989
end
9090

9191
def version_guarded_browser?
9292
minimum_browser_version_for_browser != nil
9393
end
9494

95+
def bot?
96+
parsed_user_agent.bot?
97+
end
98+
9599
def version_below_minimum_required?
96100
if minimum_browser_version_for_browser
97101
parsed_user_agent.version < UserAgent::Version.new(minimum_browser_version_for_browser.to_s)

actionpack/test/controller/allow_browser_test.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class AllowBrowserTest < ActionController::TestCase
2323
FIREFOX_114 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0"
2424
IE_11 = "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko"
2525
OPERA_106 = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 OPR/106.0.0.0"
26+
GOOGLE_BOT = "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/W.X.Y.Z Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
2627

2728
test "blocked browser below version limit" do
2829
get_with_agent :hello, FIREFOX_114
@@ -59,6 +60,14 @@ class AllowBrowserTest < ActionController::TestCase
5960
assert_response :ok
6061
end
6162

63+
test "bots" do
64+
get_with_agent :hello, GOOGLE_BOT
65+
assert_response :ok
66+
67+
get_with_agent :modern, GOOGLE_BOT
68+
assert_response :ok
69+
end
70+
6271
private
6372
def get_with_agent(action, agent)
6473
@request.headers["User-Agent"] = agent

0 commit comments

Comments
 (0)