sessions: store geolocated country in CurrentUser.
This commit is contained in:
@@ -40,6 +40,14 @@ class CurrentUser
|
||||
RequestStore[:current_ip_addr] = ip_addr
|
||||
end
|
||||
|
||||
def self.country
|
||||
RequestStore[:country]
|
||||
end
|
||||
|
||||
def self.country=(country)
|
||||
RequestStore[:country] = country
|
||||
end
|
||||
|
||||
def self.root_url
|
||||
RequestStore[:current_root_url] || "https://#{Danbooru.config.hostname}"
|
||||
end
|
||||
|
||||
@@ -51,7 +51,7 @@ class DanbooruLogger
|
||||
name: user&.name,
|
||||
level: user&.level_string,
|
||||
ip: request.remote_ip,
|
||||
country: request.headers["CF-IPCountry"],
|
||||
country: CurrentUser.country,
|
||||
safe_mode: CurrentUser.safe_mode?
|
||||
}
|
||||
end
|
||||
|
||||
@@ -34,6 +34,7 @@ class SessionLoader
|
||||
update_last_logged_in_at
|
||||
update_last_ip_addr
|
||||
set_time_zone
|
||||
set_country
|
||||
set_safe_mode
|
||||
initialize_session_cookies
|
||||
CurrentUser.user.unban! if CurrentUser.user.ban_expired?
|
||||
@@ -101,6 +102,12 @@ class SessionLoader
|
||||
Time.zone = CurrentUser.user.time_zone
|
||||
end
|
||||
|
||||
# Depends on Cloudflare
|
||||
# https://support.cloudflare.com/hc/en-us/articles/200168236-Configuring-Cloudflare-IP-Geolocation
|
||||
def set_country
|
||||
CurrentUser.country = request.headers["CF-IPCountry"]
|
||||
end
|
||||
|
||||
def set_safe_mode
|
||||
safe_mode = request.host.match?(/safebooru/i) || params[:safe_mode].to_s.truthy? || CurrentUser.user.enable_safe_mode?
|
||||
CurrentUser.safe_mode = safe_mode
|
||||
|
||||
Reference in New Issue
Block a user