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