Sha256: 889c685d8cbe9e00e87ec79c43cc4befbee7b3d7cb6c638362ae60b7cdecb6d0

Contents?: true

Size: 1.57 KB

Versions: 7

Compression:

Stored size: 1.57 KB

Contents

module Sorcery
  module Model
    module Adapters
      module ActiveRecord
        def self.included(klass)
          klass.extend ClassMethods
          klass.send(:include, InstanceMethods)
        end

        module InstanceMethods
          def update_single_attribute(name, value)
            self.send(:"#{name}=", value)
            
            primary_key = self.class.primary_key
            self.class.where(:"#{primary_key}" => self.send(:"#{primary_key}")).update_all(name => value)
          end
        end
        
        module ClassMethods
          def column_name(attribute)
            return "LOWER(#{attribute})" if (@sorcery_config.downcase_username_before_authenticating)
            return "#{attribute}"
          end

          def find_by_credentials(credentials)
             sql = @sorcery_config.username_attribute_names.map{|attribute| column_name(attribute) + " = :login"}
             where(sql.join(' OR '), :login => credentials[0]).first
          end

          def find_by_sorcery_token(token_attr_name, token)
            where("#{token_attr_name} = ?", token).first
          end

          def get_current_users
            config = sorcery_config
            where("#{config.last_activity_at_attribute_name} IS NOT NULL") \
            .where("#{config.last_logout_at_attribute_name} IS NULL OR #{config.last_activity_at_attribute_name} > #{config.last_logout_at_attribute_name}") \
            .where("#{config.last_activity_at_attribute_name} > ? ", config.activity_timeout.seconds.ago.utc.to_s(:db))
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
sorcery-0.7.12 lib/sorcery/model/adapters/active_record.rb
sorcery-0.7.11 lib/sorcery/model/adapters/active_record.rb
sorcery-0.7.10 lib/sorcery/model/adapters/active_record.rb
sorcery-0.7.9 lib/sorcery/model/adapters/active_record.rb
sorcery-0.7.8 lib/sorcery/model/adapters/active_record.rb
sorcery-0.7.7 lib/sorcery/model/adapters/active_record.rb
sorcery-0.7.6 lib/sorcery/model/adapters/active_record.rb