2025-01-19 01:13:59 +08:00
|
|
|
class ApplicationController < ActionController::Base
|
2025-01-23 19:02:52 +08:00
|
|
|
include SeoConcern
|
2025-01-19 01:13:59 +08:00
|
|
|
# Only allow modern browsers supporting webp images, web push, badges, import maps, CSS nesting, and CSS :has.
|
2025-01-27 09:30:01 +08:00
|
|
|
before_action :log_browser_info
|
2025-01-27 06:53:01 +08:00
|
|
|
# allow_browser versions: :modern
|
2025-01-27 08:23:44 +08:00
|
|
|
allow_browser versions: :modern,
|
|
|
|
patterns: [
|
|
|
|
/Mobile Safari/,
|
|
|
|
/Chrome\/[\d.]+/,
|
|
|
|
/Quark\/[\d.]+/,
|
|
|
|
/HuaweiBrowser\/[\d.]+/,
|
|
|
|
/MiuiBrowser\/[\d.]+/,
|
|
|
|
/VivoBrowser\/[\d.]+/,
|
|
|
|
/OppoBrowser\/[\d.]+/,
|
|
|
|
/UCBrowser\/[\d.]+/,
|
|
|
|
/QQBrowser\/[\d.]+/,
|
|
|
|
/MicroMessenger\/[\d.]+/,
|
|
|
|
/Alipay/,
|
|
|
|
/BaiduBoxApp/,
|
|
|
|
/baiduboxapp/i,
|
|
|
|
/SogouMobile/,
|
|
|
|
/Weibo/,
|
|
|
|
/DingTalk/,
|
|
|
|
/ToutiaoMicroApp/,
|
|
|
|
/BytedanceWebview/,
|
|
|
|
/ArkWeb/
|
2025-01-27 09:20:14 +08:00
|
|
|
],
|
|
|
|
on_failure: -> (browser) {
|
|
|
|
Rails.logger.warn <<~BROWSER_INFO
|
|
|
|
Browser Blocked:
|
|
|
|
User Agent: #{browser.ua}
|
|
|
|
Name: #{browser.name}
|
|
|
|
Version: #{browser.version}
|
|
|
|
Platform: #{browser.platform.name}
|
|
|
|
Device: #{browser.device.name}
|
|
|
|
Mobile: #{browser.mobile?}
|
|
|
|
Modern: #{browser.modern?}
|
|
|
|
Bot: #{browser.bot?}
|
|
|
|
BROWSER_INFO
|
|
|
|
}
|
2025-01-21 18:27:26 +08:00
|
|
|
before_action :set_locale
|
2025-01-27 00:43:18 +08:00
|
|
|
after_action :track_action
|
|
|
|
|
2025-01-27 09:00:54 +08:00
|
|
|
def log_browser_info
|
|
|
|
# 构建详细的浏览器信息
|
2025-01-27 09:42:08 +08:00
|
|
|
Rails.logger.info "User Agent: #{request.user_agent}"
|
|
|
|
|
2025-01-27 09:00:54 +08:00
|
|
|
# 如果是被拦截的浏览器,记录额外信息
|
2025-01-27 09:42:08 +08:00
|
|
|
# unless browser_allowed?
|
|
|
|
# Rails.logger.warn "Browser Blocked: #{browser_info.to_json}"
|
|
|
|
# end
|
2025-01-27 09:00:54 +08:00
|
|
|
end
|
|
|
|
|
2025-01-27 00:43:18 +08:00
|
|
|
protected
|
|
|
|
|
|
|
|
def track_action
|
|
|
|
ahoy.track "Viewed Application", request.path_parameters
|
|
|
|
end
|
2025-01-21 18:27:26 +08:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def set_locale
|
|
|
|
I18n.locale = params[:locale] || I18n.default_locale
|
|
|
|
end
|
2025-01-19 01:13:59 +08:00
|
|
|
end
|