module Devise::Models::Sqreenable
Sqreen model module, add all necessary behavior to a devise model
Public Class Methods
required_fields(klass)
click to toggle source
DB fields that are needed
# File lib/devise_sqreener/model.rb, line 20 def self.required_fields(klass) required_fields = %i(sqreened_email) return required_fields unless klass.devise_modules.include?(:trackable) required_fields + %i(current_sign_in_ip last_sign_in_ip current_sqreened_sign_in_ip last_sqreened_sign_in_ip) end
Public Instance Methods
current_sqreened_email()
click to toggle source
The curren email address lazily sqreened
# File lib/devise_sqreener/model.rb, line 36 def current_sqreened_email if email.present? @current_sqreened_email ||= self.class.sqreener.sqreen_email(email) end end
current_sqreened_ip_address()
click to toggle source
The current ip address lazily sqreened
# File lib/devise_sqreener/model.rb, line 29 def current_sqreened_ip_address if current_ip_address.present? @current_sqreened_ip ||= self.class.sqreener.sqreen_ip(current_ip_address) end end
inactive_message()
click to toggle source
When sign_in was refuse get the correct message
Calls superclass method
# File lib/devise_sqreener/model.rb, line 73 def inactive_message sqreen_block_sign_in? ? :forbidden : super end
sqreen_block_sign_in?()
click to toggle source
Should the current sign in be blocked
# File lib/devise_sqreener/model.rb, line 52 def sqreen_block_sign_in? oracle = Devise.sqreen_block_sign_in return false if oracle.blank? || !oracle.respond_to?(:call) oracle.call(current_sqreened_email, current_sqreened_ip_address, self) end
sqreen_block_sign_up?()
click to toggle source
Should the current sign up be blocked used as a on_create validation
# File lib/devise_sqreener/model.rb, line 60 def sqreen_block_sign_up? return false unless email_changed? oracle = Devise.sqreen_block_sign_up return false if oracle.blank? || !oracle.respond_to?(:call) if oracle.call(current_sqreened_email, current_sqreened_ip_address, self) errors[:base] << I18n.t(:forbidden, :scope => %i(devise registrations)) return true end false end
sqreen_email()
click to toggle source
save sqreened email
# File lib/devise_sqreener/model.rb, line 78 def sqreen_email return if email.blank? || !email_changed? self.sqreened_email = current_sqreened_email end
update_tracked_fields(request)
click to toggle source
Add sqreening behavior to trackable Save last sqreened_ip info
Calls superclass method
# File lib/devise_sqreener/model.rb, line 44 def update_tracked_fields(request) return unless self.class.devise_modules.include?(:trackable) self.last_sqreened_sign_in_ip = current_sqreened_sign_in_ip self.current_sqreened_sign_in_ip = current_sqreened_ip_address super(request) end