Class: LeanCms::MagicLink
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- LeanCms::MagicLink
- Defined in:
- app/models/lean_cms/magic_link.rb
Constant Summary collapse
- PURPOSES =
%w[invitation password_reset].freeze
- EXPIRATION_TIMES =
{ "invitation" => 24.hours, "password_reset" => 2.hours }.freeze
Class Method Summary collapse
- .create_for_invitation(user, created_by_ip: nil) ⇒ Object
- .create_for_password_reset(user, created_by_ip: nil) ⇒ Object
Instance Method Summary collapse
- #expired? ⇒ Boolean
- #invitation? ⇒ Boolean
- #mark_as_used!(ip_address = nil) ⇒ Object
- #password_reset? ⇒ Boolean
- #used? ⇒ Boolean
- #valid_for_use? ⇒ Boolean
Class Method Details
.create_for_invitation(user, created_by_ip: nil) ⇒ Object
24 25 26 27 28 29 30 |
# File 'app/models/lean_cms/magic_link.rb', line 24 def self.create_for_invitation(user, created_by_ip: nil) create!( user: user, purpose: "invitation", created_by_ip: created_by_ip ) end |
.create_for_password_reset(user, created_by_ip: nil) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# File 'app/models/lean_cms/magic_link.rb', line 32 def self.create_for_password_reset(user, created_by_ip: nil) where(user: user).for_purpose("password_reset").valid.update_all(used_at: Time.current) create!( user: user, purpose: "password_reset", created_by_ip: created_by_ip ) end |
Instance Method Details
#expired? ⇒ Boolean
42 43 44 |
# File 'app/models/lean_cms/magic_link.rb', line 42 def expired? expires_at <= Time.current end |
#invitation? ⇒ Boolean
58 59 60 |
# File 'app/models/lean_cms/magic_link.rb', line 58 def invitation? purpose == "invitation" end |
#mark_as_used!(ip_address = nil) ⇒ Object
54 55 56 |
# File 'app/models/lean_cms/magic_link.rb', line 54 def mark_as_used!(ip_address = nil) update!(used_at: Time.current, used_from_ip: ip_address) end |
#password_reset? ⇒ Boolean
62 63 64 |
# File 'app/models/lean_cms/magic_link.rb', line 62 def password_reset? purpose == "password_reset" end |
#used? ⇒ Boolean
46 47 48 |
# File 'app/models/lean_cms/magic_link.rb', line 46 def used? used_at.present? end |
#valid_for_use? ⇒ Boolean
50 51 52 |
# File 'app/models/lean_cms/magic_link.rb', line 50 def valid_for_use? !expired? && !used? end |