Class: User::Identities::Email

Inherits:
User::Identity show all
Defined in:
app/models/user/identities/email.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from User::Identity

deserialize, deserialize!, #serialize

Instance Attribute Details

#address_change_verificationObject

Returns the value of attribute address_change_verification.



8
9
10
# File 'app/models/user/identities/email.rb', line 8

def address_change_verification
  @address_change_verification
end

Class Method Details

.build_identity(sign_up) ⇒ Object



36
37
38
39
40
41
42
43
# File 'app/models/user/identities/email.rb', line 36

def self.build_identity 
  identity = new(address: [:email],
                 password: [:password],
                 password_confirmation: [:password_confirmation])
  ..email = identity

  identity
end

.find_by_address(address) ⇒ Object



32
33
34
# File 'app/models/user/identities/email.rb', line 32

def self.find_by_address address
  where("lower(address) =?", address.downcase).first
end

.find_identity(sign_in) ⇒ Object



27
28
29
30
# File 'app/models/user/identities/email.rb', line 27

def self.find_identity 
  identity = identity = find_by_address([:email])
  identity.authenticate([:password]) if identity
end

.unverifiedObject



51
52
53
# File 'app/models/user/identities/email.rb', line 51

def self.unverified
  joins(:verifications).where.not(verified_address)
end

.verifiedObject

Scope for all the email addresses that have been verified via email verifications or, implicitly, via password resets.



47
48
49
# File 'app/models/user/identities/email.rb', line 47

def self.verified
  joins(:verifications).where(verified_address)
end

.verify_address!(token) ⇒ Object

Forces validation of the email address

Raises:

  • (ActiveRecord::RecordNotFound)


80
81
82
83
84
85
# File 'app/models/user/identities/email.rb', line 80

def self.verify_address! token
  verification = Identities::EmailVerification.address_verification.find_by(token: token)
  raise ActiveRecord::RecordNotFound unless verification
  verification.email.address = verification.recipient
  verification.email.save!
end

Instance Method Details

#change_address(new_address) ⇒ Object Also known as: unverified_address=

Starts the address change process by creating a new email verification token



60
61
62
63
# File 'app/models/user/identities/email.rb', line 60

def change_address(new_address)
  @address_change_verification ||= verifications.create(type: 'AddressChangeVerification')
  address_change_verification.recipient = new_address
end

#reset_password!Object

Returns a newly-created password reset token



75
76
77
# File 'app/models/user/identities/email.rb', line 75

def reset_password!
  verifications.password_reset.create(recipient: address)
end

#unverified_addressObject



66
67
68
# File 'app/models/user/identities/email.rb', line 66

def unverified_address
  @address_change_verification && @address_change_verification.recipient 
end

#unverified_address_changed?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'app/models/user/identities/email.rb', line 70

def unverified_address_changed?
  @address_change_verification ? true : false
end

#verified?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'app/models/user/identities/email.rb', line 55

def verified?
  verifications.spent.where(recipient: address) ? true : false
end