class User

def self.authenticate(login_or_email, password)

def self.authenticate(login_or_email, password)
  user = where(["login = ? OR email = ?", login_or_email, login_or_email]).first
  user if user && user.authenticated?(password)
end

def after_initialize

def after_initialize
  @confirm_password = true
end

def authenticated?(password)

def authenticated?(password)
  self.password == sha1(password)
end

def confirm_password?

def confirm_password?
  @confirm_password
end

def encrypt_password

def encrypt_password
  self.salt = Digest::SHA1.hexdigest("--#{Time.now}--#{login}--sweet harmonious biscuits--")
  self.password = sha1(password)
end

def encrypt_password_unless_empty_or_unchanged

def encrypt_password_unless_empty_or_unchanged
  user = self.class.find(self.id)
  case password
  when ''
    self.password = user.password
  when user.password
  else
    encrypt_password
  end
end

def forget_me

def forget_me
  update_attribute(:session_token, nil)
end

def generate_token(column)

def generate_token(column)
  self[column] = SecureRandom.urlsafe_base64 if User.exists?(column => self[column])
end

def has_role?(role)

def has_role?(role)
  respond_to?("#{role}?") && send("#{role}?")
end

def remember_me

def remember_me
  update_attribute(:session_token, sha1(Time.now + TrustyCms::Config['session_timeout'].to_i)) unless self.session_token?
end

def send_password_reset

def send_password_reset
  generate_token(:password_reset_token)
  update_attribute(:password_reset_sent_at, Time.zone.now)
  PasswordMailer.password_reset(self).deliver_now
end

def sha1(phrase)

def sha1(phrase)
  Digest::SHA1.hexdigest("--#{salt}--#{phrase}--")
end

def validate_length_of_password?

def validate_length_of_password?
  new_record? or not password.to_s.empty?
end