18F/identity-idp

View on GitHub
app/services/password_reset_token_validator.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
# frozen_string_literal: true

class PasswordResetTokenValidator
  include ActiveModel::Model

  validates :user, presence: { message: 'invalid_token' }
  validate :valid_token, if: :user

  def initialize(user)
    @user = user
  end

  def submit
    FormResponse.new(success: valid?, errors: errors, extra: { user_id: user&.uuid })
  end

  private

  attr_accessor :user

  def valid_token
    return if user.reset_password_period_valid?
    errors.add(:user, 'token_expired', type: :token_expired)
  end
end