diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2017-06-25 16:54:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-25 16:54:30 +0200 |
commit | f7301bd5b94d3033b5dbb9ff65dd1ed8ac825ce5 (patch) | |
tree | ddc52c8b89c84ee825d451cc50a6946d7d77b2bb /app/models/session_activation.rb | |
parent | 099a3b4eaccc37338eda9f45fc26991ea7115200 (diff) |
Add overview of active sessions (#3929)
* Add overview of active sessions * Better display of browser/platform name * Improve how browser information is stored and displayed for sessions overview * Fix test
Diffstat (limited to 'app/models/session_activation.rb')
-rw-r--r-- | app/models/session_activation.rb | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb index 71e9f023c..75339b5f7 100644 --- a/app/models/session_activation.rb +++ b/app/models/session_activation.rb @@ -8,31 +8,49 @@ # session_id :string not null # created_at :datetime not null # updated_at :datetime not null +# user_agent :string default(""), not null +# ip :inet # class SessionActivation < ApplicationRecord - LIMIT = Rails.configuration.x.max_session_activations - - def self.active?(id) - id && where(session_id: id).exists? + def detection + @detection ||= Browser.new(user_agent) end - def self.activate(id) - activation = create!(session_id: id) - purge_old - activation + def browser + detection.id end - def self.deactivate(id) - return unless id - where(session_id: id).destroy_all + def platform + detection.platform.id end - def self.purge_old - order('created_at desc').offset(LIMIT).destroy_all + before_save do + self.user_agent = '' if user_agent.nil? end - def self.exclusive(id) - where('session_id != ?', id).destroy_all + class << self + def active?(id) + id && where(session_id: id).exists? + end + + def activate(options = {}) + activation = create!(options) + purge_old + activation + end + + def deactivate(id) + return unless id + where(session_id: id).destroy_all + end + + def purge_old + order('created_at desc').offset(Rails.configuration.x.max_session_activations).destroy_all + end + + def exclusive(id) + where('session_id != ?', id).destroy_all + end end end |