We were very inconsistent regarding these rules. Personally I prefer no empty lines around blocks, clases, etc... as recommended by the Ruby style guide [1], and they're the default values in rubocop, so those are the settings I'm applying. The exception is the `private` access modifier, since we were leaving empty lines around it most of the time. That's the default rubocop rule as well. Personally I don't have a strong preference about this one. [1] https://rubystyle.guide/#empty-lines-around-bodies
37 lines
887 B
Ruby
37 lines
887 B
Ruby
class Verification::Email
|
|
include ActiveModel::Model
|
|
|
|
attr_accessor :verified_user, :recipient, :plain_token, :encrypted_token
|
|
|
|
validates :verified_user, presence: true
|
|
validates :recipient, presence: true
|
|
|
|
def initialize(verified_user)
|
|
@verified_user = verified_user
|
|
@recipient = @verified_user&.email
|
|
end
|
|
|
|
def save
|
|
return false unless valid?
|
|
|
|
generate_token
|
|
user.update!(email_verification_token: @plain_token)
|
|
end
|
|
|
|
def user
|
|
User.find_by(document_number: verified_user.document_number)
|
|
end
|
|
|
|
def generate_token
|
|
@plain_token, @encrypted_token = Devise.token_generator.generate(User, :email_verification_token)
|
|
end
|
|
|
|
def self.find(user, token)
|
|
valid_token?(user, token)
|
|
end
|
|
|
|
def self.valid_token?(user, token)
|
|
Devise.token_generator.digest(User, :email_verification_token, user.email_verification_token) == token
|
|
end
|
|
end
|