# frozen_string_literal: true module UserAuthTokensMixin extend ActiveSupport::Concern included { attributes :id, :client_ip, :location, :browser, :device, :os, :icon, :created_at } def client_ip object.client_ip.to_s end def location ipinfo = DiscourseIpInfo.get(client_ip, locale: I18n.locale) ipinfo[:location].presence || I18n.t("staff_action_logs.unknown") 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 "fab-android" when :chromeos "fab-chrome" when :macos, :ios "fab-apple" when :linux "fab-linux" when :windows "fab-windows" else "question" end end end