Sha256: 83c6cde9a8c03c0aecfcacb3c0ecd165c5e1fa657928ae4ba0f17bb614f3deaf

Contents?: true

Size: 858 Bytes

Versions: 5

Compression:

Stored size: 858 Bytes

Contents

# encoding: UTF-8

module Spontaneous::Permissions
  class AccessKey < Sequel::Model(:spontaneous_access_keys)
    plugin :timestamps
    many_to_one :user, :class => :'Spontaneous::Permissions::User'

    def self.authenticate(key_id, ip_address = nil)
      if key = self.for_id(key_id)
        key.access!(ip_address)
        return key
      end
      nil
    end

    def self.valid?(key_id, user)
      return true if (key = self.for_id(key_id)) && (key.user == user) && (key.user.enabled?)
      false
    end

    def self.for_id(key_id)
      self[:key_id => key_id]
    end

    def before_create
      self.key_id = Spontaneous::Permissions.random_string(44)
      self.last_access_at = Time.now
      super
    end

    def access!(ip_address = nil)
      self.update(:last_access_at => Time.now, :last_access_ip => ip_address)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
spontaneous-0.2.0.alpha7 lib/spontaneous/permissions/access_key.rb
spontaneous-0.2.0.alpha6 lib/spontaneous/permissions/access_key.rb
spontaneous-0.2.0.alpha5 lib/spontaneous/permissions/access_key.rb
spontaneous-0.2.0.alpha4 lib/spontaneous/permissions/access_key.rb
spontaneous-0.2.0.alpha3 lib/spontaneous/permissions/access_key.rb