Class: Invitation

Inherits:
ApplicationRecord
  • Object
show all
Defined in:
lib/generators/ruby_cms/templates/models/invitation.rb

Constant Summary collapse

DEFAULT_TTL =
14.days

Instance Method Summary collapse

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

Returns:

  • (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_labelObject



35
36
37
# File 'lib/generators/ruby_cms/templates/models/invitation.rb', line 35

def role_label
  admin ? "Beheerder" : "Gebruiker"
end

#statusObject



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