trabajo-afectivo/app/jobs/session_timeout_job/session.rb

54 lines
1 KiB
Ruby
Raw Normal View History

# Copyright (C) 2012-2021 Zammad Foundation, http://zammad-foundation.org/
class SessionTimeoutJob::Session
attr_accessor :session, :user
delegate :destroy, to: :session
def initialize(session)
@session = session
@user = User.find_by(id: session.data['user_id'])
end
def user?
user.present?
end
def active?
return true if !user?
return true if timeout < 1
return true if session.data['ping'] > timeout.seconds.ago
end
def frontend_timeout
return if !user?
PushMessages.send_to(user.id, { event: 'session_timeout' })
end
def timeout
@timeout ||= begin
permissions = Permission.where(id: user.permissions_with_child_ids).pluck(:name)
result = -1
config.each do |key, value|
next if key == 'default'
next if permissions.exclude?(key)
next if value.to_i < result
result = value.to_i
end
if result < 1
result = config['default'].to_i
end
result
end
end
def config
Setting.get('session_timeout')
end
end