Sha256: 73437e85d5191ab1bed04e11803d4c299372dc8db0e9666f4912faf3f171aebe

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

class User < ApplicationRecord
  has_secure_password

  has_many :email_verification_tokens, dependent: :destroy
  has_many :password_reset_tokens, dependent: :destroy

  has_many :sessions, dependent: :destroy
  <%- if options.trackable? -%>
  has_many :events, dependent: :destroy
  <%- end -%>
  <%- if code_verifiable? %>
  kredis_string :verification_code, expires_in: 2.days
  <%- end -%>

  validates :email, presence: true, uniqueness: true, format: { with: URI::MailTo::EMAIL_REGEXP }
  validates :password, allow_nil: true, length: { minimum: 12 }, format: { with: /(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])/ }
  <%- if options.pwned? -%>
  validates :password, not_pwned: { message: "might easily be guessed" }
  <%- end -%>

  before_validation do
    self.email = email.try(:downcase).try(:strip)
  end

  before_validation if: :email_changed? do
    self.verified = false
  end

  after_update if: :password_digest_previously_changed? do
    sessions.where.not(id: Current.session).destroy_all
  end

  <%- if options.trackable? %>
  after_update if: :email_previously_changed? do
    events.create! action: "email_verification_requested"
  end

  after_update if: :password_digest_previously_changed? do
    events.create! action: "password_changed"
  end

  after_update if: :verified_previously_changed? do
    events.create! action: "email_verified" if verified?
  end
  <%- end -%>
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
authentication-zero-2.16.0 lib/generators/authentication/templates/models/user.rb.tt
authentication-zero-2.15.9 lib/generators/authentication/templates/models/user.rb.tt
authentication-zero-2.15.8 lib/generators/authentication/templates/models/user.rb.tt
authentication-zero-2.15.7 lib/generators/authentication/templates/models/user.rb.tt
authentication-zero-2.15.6 lib/generators/authentication/templates/models/user.rb.tt