Sha256: 7694a920b625bb10500f9ab1c5e550f77ba3c14eb4f967e2df65d2213b403083

Contents?: true

Size: 864 Bytes

Versions: 40

Compression:

Stored size: 864 Bytes

Contents

class Marty::ApiAuth < Marty::Base
  has_mcfly

  KEY_SIZE = 19

  validates_presence_of :app_name, :api_key, :script_name

  class ApiAuthValidator < ActiveModel::Validator
    def validate(api)
      api.errors.add(:base, "API Key length must be #{KEY_SIZE * 2}") if
        api.api_key && api.api_key.length != KEY_SIZE * 2

      api.errors.add(:base, 'Script Name must reference a valid script') unless
        Marty::Script.find_script(api.script_name, nil)
    end
  end

  validates_with ApiAuthValidator

  mcfly_validates_uniqueness_of :api_key, scope: [:script_name]
  validates_uniqueness_of :app_name, scope: [:script_name,
                                             :obsoleted_dt]

  before_validation do
    self.api_key = Marty::ApiAuth.generate_key if
      api_key.blank?
  end

  def self.generate_key
    SecureRandom.hex(KEY_SIZE)
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
marty-9.3.0 app/models/marty/api_auth.rb
marty-8.5.0 app/models/marty/api_auth.rb
marty-8.4.1 app/models/marty/api_auth.rb
marty-8.3.1 app/models/marty/api_auth.rb
marty-8.2.0 app/models/marty/api_auth.rb
marty-8.0.0 app/models/marty/api_auth.rb
marty-6.1.0 app/models/marty/api_auth.rb
marty-5.2.0 app/models/marty/api_auth.rb
marty-5.1.4 app/models/marty/api_auth.rb
marty-5.1.3 app/models/marty/api_auth.rb
marty-5.1.2 app/models/marty/api_auth.rb
marty-5.1.1 app/models/marty/api_auth.rb
marty-5.1.0 app/models/marty/api_auth.rb
marty-3.1.0 app/models/marty/api_auth.rb
marty-3.0.1 app/models/marty/api_auth.rb
marty-4.0.0.rc2 app/models/marty/api_auth.rb
marty-3.0.0 app/models/marty/api_auth.rb
marty-2.9.3 app/models/marty/api_auth.rb
marty-2.9.2 app/models/marty/api_auth.rb
marty-2.9.1 app/models/marty/api_auth.rb