Module: RailsJwtAuth::Invitable
- 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(params) ⇒ Object
Finishes invitation process setting user password.
- #expired_invitation_token? ⇒ Boolean
-
#invite ⇒ Object
Sends an invitation to user If the user has pending invitation, new one is sent.
- #inviting? ⇒ Boolean
- #valid_for_invite? ⇒ Boolean
Class Method Details
.included(base) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 3 def self.included(base) base.extend ClassMethods base.class_eval do if defined?(Mongoid) && 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 end end end |
Instance Method Details
#accept_invitation(params) ⇒ Object
Finishes invitation process setting user password
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 54 def accept_invitation(params) return false unless invitation_token.present? self.assign_attributes(params) valid? errors.add(:password, :blank) if params[:password].blank? errors.add(:invitation_token, :expired) if expired_invitation_token? return false unless errors.empty? self.invitation_accepted_at = Time.current self.invitation_token = nil self.invitation_sent_at = nil self.confirmed_at = Time.current if respond_to?(:confirmed_at) && confirmed_at.nil? save end |
#expired_invitation_token? ⇒ Boolean
83 84 85 86 87 88 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 83 def expired_invitation_token? expiration_time = RailsJwtAuth.invitation_expiration_time return false if expiration_time.to_i.zero? invitation_sent_at && invitation_sent_at < expiration_time.ago end |
#invite ⇒ Object
Sends an invitation to user If the user has pending invitation, new one is sent
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 35 def invite if persisted? && !invitation_token errors.add(RailsJwtAuth.auth_field_name, :registered) return false end @inviting = true self.invitation_token = generate_invitation_token self.invitation_sent_at = Time.current return false unless save_without_password RailsJwtAuth.send_email(:invitation_instructions, self) true ensure @inviting = false end |
#inviting? ⇒ Boolean
72 73 74 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 72 def inviting? @inviting || false end |
#valid_for_invite? ⇒ Boolean
76 77 78 79 80 81 |
# File 'app/models/concerns/rails_jwt_auth/invitable.rb', line 76 def valid_for_invite? @inviting = true valid_without_password? ensure @inviting = false end |