Sha256: 9dc5d689eaf50f91cc25e513333918caaf00bae7417351a0bd4f274814a63182

Contents?: true

Size: 960 Bytes

Versions: 11

Compression:

Stored size: 960 Bytes

Contents

# frozen_string_literal: true

module Maquina
  class ActiveSession < ApplicationRecord
    belongs_to :user, class_name: "Maquina::User", foreign_key: :maquina_user_id
    delegate :blocked?, to: :user

    after_initialize :configure_expiration

    validates :expires_at, presence: true, comparison: {greater_than: Time.zone.now}, if: ->(session) { (session.new_record? || session.changed.includes?("expires_at")) && Maquina.configuration.session_expiration.present? }
    validate :non_blocked_user

    def expired?
      return false if expires_at.blank?

      !expires_at.future?
    end

    private

    def non_blocked_user
      return if user.blank? || !blocked?

      errors.add(:user, :blocked)
    end

    def configure_expiration
      if new_record? && expires_at.blank? && Maquina.configuration.session_expiration.present?
        self.expires_at = Time.zone.now.since(Maquina.configuration.session_expiration)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
maquina-0.5.2 app/models/maquina/active_session.rb
maquina-0.5.1 app/models/maquina/active_session.rb
maquina-0.4.0 app/models/maquina/active_session.rb
maquina-0.3.0 app/models/maquina/active_session.rb
maquina-0.2.5 app/models/maquina/active_session.rb
maquina-0.2.4 app/models/maquina/active_session.rb
maquina-0.2.3 app/models/maquina/active_session.rb
maquina-0.2.2 app/models/maquina/active_session.rb
maquina-0.2.1 app/models/maquina/active_session.rb
maquina-0.2.0 app/models/maquina/active_session.rb
maquina-0.1.0 app/models/maquina/active_session.rb