discourse/app/serializers/concerns/user_auth_tokens_mixin.rb

61 lines
1.2 KiB
Ruby

require_dependency 'browser_detection'
require_dependency 'discourse_ip_info'
module UserAuthTokensMixin
extend ActiveSupport::Concern
included do
attributes :id,
:client_ip,
:location,
:browser,
:device,
:os,
:icon,
:created_at
end
def client_ip
object.client_ip.to_s
end
def location
ipinfo = DiscourseIpInfo.get(client_ip, locale: I18n.locale)
location = [ipinfo[:city], ipinfo[:region], ipinfo[:country]].reject { |x| x.blank? }.join(", ")
return I18n.t('staff_action_logs.unknown') if location.blank?
location
end
def browser
val = BrowserDetection.browser(object.user_agent)
I18n.t("user_auth_tokens.browser.#{val}")
end
def device
val = BrowserDetection.device(object.user_agent)
I18n.t("user_auth_tokens.device.#{val}")
end
def os
val = BrowserDetection.os(object.user_agent)
I18n.t("user_auth_tokens.os.#{val}")
end
def icon
case BrowserDetection.os(object.user_agent)
when :android
'android'
when :macos, :ios
'apple'
when :linux
'linux'
when :windows
'windows'
else
'question'
end
end
end