app/models/user.rb
class User < ApplicationRecord
include Authorizable
# Include default devise modules. Others available are:
# :registerable, :confirmable, :lockable and :omniauthable
# Virtual attribute for authenticating by either username or email
attr_accessor :login
devise :database_authenticatable, :recoverable, :rememberable, :trackable, :validatable,
:timeoutable, :omniauthable
validates :username, presence: true, uniqueness: { scope: :provider, case_sensitive: false }
def display_name
fullname.presence || username
end
# Devise method overridden to allow sign in with email or username
def self.find_for_database_authentication(warden_conditions)
conditions = warden_conditions.dup
login = conditions.delete(:login)
if login
where(conditions).where(['lower(username) = :value OR lower(email) = :value', { value: login.downcase }]).first
else
where(conditions).first
end
end
def ldap_user?
provider == 'ldap'
end
def enabled?
self.enabled
end
def disabled?
!self.enabled
end
def enable!
update!(enabled: true)
end
def disable!
update!(enabled: false)
end
def active_for_authentication?
super && enabled?
end
def inactive_message
I18n.t('chaltron.users.inactive_message')
end
end