Module: Biovision::Components::Users::Codes
- Included in:
- Biovision::Components::UsersComponent
- Defined in:
- app/lib/biovision/components/users/codes.rb
Overview
Handling user-related codes
Instance Method Summary collapse
- #activate_email_confirmation(code) ⇒ Object
- #activate_invitation(code, user) ⇒ Object
- #create_email_confirmation(user) ⇒ Object
- #create_invitations_for_user(user) ⇒ Object
- #create_phone_confirmation(user) ⇒ Object
- #send_email_confirmation(user) ⇒ Object
- #send_phone_confirmation(user) ⇒ Object
- #valid_code?(code, code_type) ⇒ Boolean
- #valid_email_confirmation?(code) ⇒ Boolean
- #valid_invitation?(code) ⇒ Boolean
- #valid_recovery?(code) ⇒ Boolean
Instance Method Details
#activate_email_confirmation(code) ⇒ Object
74 75 76 77 78 |
# File 'app/lib/biovision/components/users/codes.rb', line 74 def activate_email_confirmation(code) return unless valid_email_confirmation?(code) code.user.update(email_confirmed: true) end |
#activate_invitation(code, user) ⇒ Object
82 83 84 85 86 87 88 89 |
# File 'app/lib/biovision/components/users/codes.rb', line 82 def activate_invitation(code, user) return if code.nil? || !code.active? || user.nil? code.decrement!(:quantity) user.update(inviter_id: code.user_id) register_metric(self.class::METRIC_USED_INVITATION) end |
#create_email_confirmation(user) ⇒ Object
36 37 38 39 40 41 42 |
# File 'app/lib/biovision/components/users/codes.rb', line 36 def create_email_confirmation(user) code_type = self.class::CODE_EMAIL_CONFIRMATION code = @component.codes.new(user: user, code_type: code_type) code.data['email'] = user.email code.save code end |
#create_invitations_for_user(user) ⇒ Object
92 93 94 95 96 97 98 99 100 |
# File 'app/lib/biovision/components/users/codes.rb', line 92 def create_invitations_for_user(user) quantity = settings[self.class::SETTING_INVITE_COUNT].to_i return if quantity < 1 code = @component.codes.new(user: user, quantity: quantity) code.code_type = self.class::CODE_INVITATION code.save end |
#create_phone_confirmation(user) ⇒ Object
45 46 47 48 49 50 51 |
# File 'app/lib/biovision/components/users/codes.rb', line 45 def create_phone_confirmation(user) code_type = self.class::CODE_PHONE_CONFIRMATION code = @component.codes.new(user: user, code_type: code_type) code.data['phone'] = user.phone code.save code end |
#send_email_confirmation(user) ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'app/lib/biovision/components/users/codes.rb', line 54 def send_email_confirmation(user) code_type = self.class::CODE_EMAIL_CONFIRMATION codes = @component.codes.active.owned_by(user).with_type(code_type) code = codes.find_by("data->>'email' = ?", user.email) code = create_email_confirmation(user) if code.nil? CodeSender.email(code.id).deliver_later end |
#send_phone_confirmation(user) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'app/lib/biovision/components/users/codes.rb', line 64 def send_phone_confirmation(user) code_type = self.class::CODE_PHONE_CONFIRMATION codes = @component.codes.active.owned_by(user).with_type(code_type) code = codes.find_by("data->>'phone' = ?", user.email) code = create_phone_confirmation(user) if code.nil? SendPhoneConfirmationJob.perform_later(code.id) end |
#valid_code?(code, code_type) ⇒ Boolean
10 11 12 13 14 |
# File 'app/lib/biovision/components/users/codes.rb', line 10 def valid_code?(code, code_type) return false if code.nil? || code.biovision_component != @component code.type?(code_type) && code.active? end |
#valid_email_confirmation?(code) ⇒ Boolean
17 18 19 20 21 22 23 |
# File 'app/lib/biovision/components/users/codes.rb', line 17 def valid_email_confirmation?(code) return false if code.nil? || code.biovision_component != @component return false unless code.active? code_type = self.class::CODE_EMAIL_CONFIRMATION code.type?(code_type) && code.data['email'] == user.email end |
#valid_invitation?(code) ⇒ Boolean
26 27 28 |
# File 'app/lib/biovision/components/users/codes.rb', line 26 def valid_invitation?(code) valid_code?(code, self.class::CODE_INVITATION) end |
#valid_recovery?(code) ⇒ Boolean
31 32 33 |
# File 'app/lib/biovision/components/users/codes.rb', line 31 def valid_recovery?(code) valid_code?(code, self.class::CODE_RECOVERY) end |