Module: RailsJwtAuth::Invitable
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/rails_jwt_auth/invitable.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#accept_invitation ⇒ Object
Accept an invitation by clearing token and setting invitation_accepted_at.
- #accept_invitation! ⇒ Object
- #accepted_invitation? ⇒ Boolean
- #generate_invitation_token! ⇒ Object
-
#invite! ⇒ Object
rubocop:disable Metrics/AbcSize.
-
#invited? ⇒ Boolean
rubocop:enable Metrics/AbcSize.
- #valid_invitation? ⇒ Boolean
Class Method Details
.included(base) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 5 def self.included(base) base.extend ClassMethods base.class_eval do if ancestors.include? Mongoid::Document # include GlobalID::Identification to use deliver_later method # http://edgeguides.rubyonrails.org/active_job_basics.html#globalid include GlobalID::Identification if RailsJwtAuth.deliver_later field :invitation_token, type: String field :invitation_sent_at, type: Time field :invitation_accepted_at, type: Time field :invitation_created_at, type: Time end end end |
Instance Method Details
#accept_invitation ⇒ Object
Accept an invitation by clearing token and setting invitation_accepted_at
50 51 52 53 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 50 def accept_invitation self.invitation_accepted_at = Time.now.utc self.invitation_token = nil end |
#accept_invitation! ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 55 def accept_invitation! return unless invited? if valid_invitation? accept_invitation self.confirmed_at = Time.now.utc if respond_to? :confirmed_at else errors.add(:invitation_token, :invalid) end end |
#accepted_invitation? ⇒ Boolean
109 110 111 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 109 def accepted_invitation? invitation_token.nil? && invitation_accepted_at.present? end |
#generate_invitation_token! ⇒ Object
101 102 103 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 101 def generate_invitation_token! generate_invitation_token && save(validate: false) end |
#invite! ⇒ Object
rubocop:disable Metrics/AbcSize
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 66 def invite! self.invitation_created_at = Time.now.utc if new_record? unless password || password_digest passw = SecureRandom.base58(16) self.password = passw self.password_confirmation = passw end valid? # Users that are registered and were not invited are not reinvitable if !new_record? && !invited? errors.add(RailsJwtAuth.auth_field_name, :taken) end # Users that have already accepted an invitation are not reinvitable if !new_record? && invited? && invitation_accepted_at.present? errors.add(RailsJwtAuth.auth_field_name, :taken) end return self unless errors.empty? generate_invitation_token if invitation_token.nil? self.invitation_sent_at = Time.now.utc send_invitation_mail if save(validate: false) self end |
#invited? ⇒ Boolean
rubocop:enable Metrics/AbcSize
97 98 99 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 97 def invited? (persisted? && invitation_token.present?) end |
#valid_invitation? ⇒ Boolean
105 106 107 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 105 def valid_invitation? invited? && invitation_period_valid? end |