Class: Invitation
- Inherits:
-
ApplicationRecord
- Object
- ApplicationRecord
- Invitation
- Defined in:
- lib/generators/ruby_cms/templates/models/invitation.rb
Constant Summary collapse
- DEFAULT_TTL =
14.days
Instance Method Summary collapse
- #accept!(password:, password_confirmation: nil) ⇒ Object
- #extend_expiry!(by: DEFAULT_TTL) ⇒ Object
- #pending? ⇒ Boolean
- #revoke! ⇒ Object
- #role_label ⇒ Object
- #status ⇒ Object
- #touch_sent! ⇒ Object
Instance Method Details
#accept!(password:, password_confirmation: nil) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/generators/ruby_cms/templates/models/invitation.rb', line 39 def accept!(password:, password_confirmation: nil) raise "Niet uitnodigbaar" unless pending? user_class = Object.const_get(Rails.application.config.ruby_cms.user_class_name.presence || "User") user = user_class.new( email_address: email, password: password, password_confirmation: password_confirmation || password, admin: admin ) user.transaction do user.save! update!(accepted_at: Time.current) end user end |
#extend_expiry!(by: DEFAULT_TTL) ⇒ Object
64 65 66 |
# File 'lib/generators/ruby_cms/templates/models/invitation.rb', line 64 def extend_expiry!(by: DEFAULT_TTL) update!(expires_at: Time.current + by) end |
#pending? ⇒ Boolean
31 32 33 |
# File 'lib/generators/ruby_cms/templates/models/invitation.rb', line 31 def pending? status == :pending end |
#revoke! ⇒ Object
56 57 58 |
# File 'lib/generators/ruby_cms/templates/models/invitation.rb', line 56 def revoke! update!(revoked_at: Time.current) end |
#role_label ⇒ Object
35 36 37 |
# File 'lib/generators/ruby_cms/templates/models/invitation.rb', line 35 def role_label admin ? "Beheerder" : "Gebruiker" end |
#status ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/generators/ruby_cms/templates/models/invitation.rb', line 23 def status return :accepted if accepted_at return :revoked if revoked_at return :expired if expires_at && expires_at <= Time.current :pending end |
#touch_sent! ⇒ Object
60 61 62 |
# File 'lib/generators/ruby_cms/templates/models/invitation.rb', line 60 def touch_sent! update!(last_sent_at: Time.current) end |