devise_helper.rb 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. module DeviseHelper
  2. # Customized to add model error instead of flashing the error.
  3. def devise_error_messages!
  4. flash_alerts = []
  5. error_key = "errors.messages.not_saved"
  6. flash_alerts.push("This account was locked due to too many failed login attempts. Check your email for a link to unlock.") if locked_account?
  7. if !flash.empty?
  8. flash_alerts.push(flash[:error]) if flash[:error]
  9. flash_alerts.push(flash[:alert]) if flash[:alert]
  10. flash_alerts.push(flash[:notice]) if flash[:notice]
  11. error_key = "devise.failure.invalid"
  12. end
  13. return "" if resource.errors.empty? && flash_alerts.empty?
  14. @hasErrorMessages = true
  15. errors = resource.errors.empty? ? flash_alerts : resource.errors.full_messages
  16. messages = errors.map { |msg| content_tag(:p, msg) }.join
  17. sentence = I18n.t(error_key, count: errors.count,
  18. resource: resource.class.model_name.human.downcase)
  19. if !flash[:notice] | flash[:alert]
  20. panel_title = "<div class='panel-heading'><h3 class='panel-title'>Error</h3></div>"
  21. end
  22. html = <<-HTML
  23. <div class="panel panel-default error_explanation">
  24. #{panel_title}
  25. <div class="panel-body">
  26. #{messages}
  27. </div>
  28. </div>
  29. HTML
  30. html.html_safe # rubocop:disable Rails/OutputSafety
  31. end
  32. def devise_error_messages?
  33. @hasErrorMessages ? true : false
  34. end
  35. def locked_account?
  36. u = User.find_by_email(@user.email)
  37. u && u.access_locked?
  38. end
  39. end