sessions: store geolocated country in CurrentUser.

This commit is contained in:
evazion
2020-12-31 01:43:29 -06:00
parent 4b171bf97e
commit 9e9ac8f4bf
3 changed files with 16 additions and 1 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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