# frozen_string_literal: true

require 'open-uri'

# Usuarie de la plataforma
class Usuarie < ApplicationRecord
  devise :invitable, :database_authenticatable,
         :recoverable, :rememberable, :validatable,
         :confirmable, :lockable, :registerable

  validates_uniqueness_of :email

  has_many :roles
  has_many :sites, through: :roles

  def name
    email.split('@', 2).first
  end

  # Encuentra el rol que tiene le usuarie en el sitio
  def rol_for_site(site)
    roles.find_by(site: site)
  end

  # XXX: Ver increment_and_lock
  def can_sign_in?(password)
    active_for_authentication? && valid_password?(password)
  end

  # XXX: Estamos duplicando la forma en que Devise bloquea acceso
  # por intentos fallidos porque no tenemos forma de correr
  # validate() desde la estrategia DatabaseAuthenticatable sin
  # generar una redirección.
  #
  # lib/devise/models/lockable.rb
  def increment_and_lock!
    increment_failed_attempts
    lock_access! if attempts_exceeded? && !access_locked?
  end
end