Sha256: b0335b2e5dae9f3fc4b6ee58bfb114401761583602e2c03cb6b2c16f1403e31b

Contents?: true

Size: 1.42 KB

Versions: 3

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module MinimalistAuthentication
  module EmailVerification
    extend ActiveSupport::Concern

    included do
      generates_token_for :email_verification, expires_in: 1.hour do
        email
      end

      before_save :clear_email_verification, if: :email_changed?

      scope :with_verified_email, -> { where.not(email_verified_at: nil) }
    end

    module ClassMethods
      def email_verified
        MinimalistAuthentication.deprecator.warn(<<-MSG.squish)
          Calling #email_verified is deprecated.
          Call #with_verified_email instead.
        MSG
        with_verified_email
      end

      def find_by_verified_email(email:)
        active.with_verified_email.find_by(email:)
      end
    end

    def email_verified?
      email.present? && email_verified_at.present?
    end

    def needs_email_set?
      request_email_enabled? && email.blank?
    end

    def needs_email_verification?
      email_verification_enabled? && email.present? && email_verified_at.blank?
    end

    def verify_email(token)
      touch(:email_verified_at) if token_owner?(:email_verification, token)
    end

    private

    def clear_email_verification
      self.email_verified_at = nil
    end

    def email_verification_enabled?
      MinimalistAuthentication.configuration.verify_email
    end

    def request_email_enabled?
      MinimalistAuthentication.configuration.request_email
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
minimalist_authentication-3.2.2 lib/minimalist_authentication/email_verification.rb
minimalist_authentication-3.2.1 lib/minimalist_authentication/email_verification.rb
minimalist_authentication-3.2.0 lib/minimalist_authentication/email_verification.rb