Module: Devise::Models::PasswordSharing
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/devise_password_sharing_extension/models/password_sharing.rb
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #ban_for_password_sharing! ⇒ Object
- #create_login_event!(remote_ip) ⇒ Object
- #password_sharing? ⇒ Boolean
Instance Method Details
#ban_for_password_sharing! ⇒ Object
44 45 46 47 48 |
# File 'lib/devise_password_sharing_extension/models/password_sharing.rb', line 44 def ban_for_password_sharing! return unless self.class.enable_banning self.banned_for_password_sharing_at = Time.now save(validate: false) end |
#create_login_event!(remote_ip) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/devise_password_sharing_extension/models/password_sharing.rb', line 23 def create_login_event!(remote_ip) unless @@white_listed_ips.include?(remote_ip) database = GeoIP.new(self.class.geoip_database) if geo = database.city(remote_ip) begin evt = login_events.build evt.ip_address = remote_ip evt.latitude = geo.latitude evt.longitude = geo.longitude evt.city = geo.city_name.encode('US-ASCII', undef: :replace) evt.country_code = geo.country_code2.encode('US-ASCII', undef: :replace) evt.region_name = geo.region_name.encode('US-ASCII', undef: :replace) evt.save! rescue ActiveRecord::RecordInvalid => e # Just move on and be nice. Rails.logger.info("Problem with geo: #{geo.inspect}") end end end end |
#password_sharing? ⇒ Boolean
50 51 52 53 |
# File 'lib/devise_password_sharing_extension/models/password_sharing.rb', line 50 def password_sharing? return true unless banned_for_password_sharing_at.nil? login_events.cities_in_the_last(self.class.time_frame).count >= self.class.number_of_cities end |