Sha256: f0ef7f995e29f637d79be09d675160323f5d4b8fb80f3a6a4d6ac2f1731207c9
Contents?: true
Size: 1.29 KB
Versions: 4
Compression:
Stored size: 1.29 KB
Contents
require 'mcfly' class Marty::ApiAuth < Marty::Base has_mcfly KEY_SIZE = 19 def self.generate_key SecureRandom.hex(KEY_SIZE) end class ApiAuthValidator < ActiveModel::Validator def validate(api) api.errors[:base] = "API Key length must be #{KEY_SIZE*2}" if api.api_key && api.api_key.length != KEY_SIZE*2 api.errors[:base] = "Script Name must reference a valid script" if Marty::Script.find_script(api.script_name, nil).nil? end end before_validation do self.api_key = Marty::ApiAuth.generate_key if self.api_key.nil? || self.api_key.length == 0 end <<<<<<< HEAD # attr_accessible :app_name, :api_key, :script_name ======= >>>>>>> master validates_presence_of :app_name, :api_key, :script_name validates_with ApiAuthValidator mcfly_validates_uniqueness_of :api_key, scope: [:script_name] validates_uniqueness_of :app_name, scope: [:script_name, :obsoleted_dt] def self.authorized?(script_name, api_key) is_secured = where(script_name: script_name, obsoleted_dt: 'infinity').exists? !is_secured || where(api_key: api_key, script_name: script_name, obsoleted_dt: 'infinity').exists? end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
marty-0.5.15 | app/models/marty/api_auth.rb~ |
marty-0.5.14 | app/models/marty/api_auth.rb~ |
marty-0.5.13 | app/models/marty/api_auth.rb~ |
marty-0.5.12 | app/models/marty/api_auth.rb~ |