Guest User

Untitled

a guest
Feb 21st, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.15 KB | None | 0 0
  1. module Authentication
  2. def self.included(base)
  3. base.class_eval <<-EVAL
  4. before_filter :authenticate
  5.  
  6. include InstanceMethods
  7.  
  8. helper_method :current_user
  9. helper_method :current_account
  10. helper_method :current_account_user
  11. EVAL
  12. end
  13.  
  14. module InstanceMethods
  15. def authenticate
  16. if current_user && current_user.confirmation_key?
  17. flash[:notice] = "Please set a password before continuing"
  18. redirect_to edit_password_path
  19. end
  20.  
  21. unless current_user
  22. if [Mime::ATOM, Mime::RSS, Mime::JSON, Mime::XML].include? request.format
  23. logger.debug "#{current_user.inspect}"
  24. request_http_basic_authentication and return false
  25. else
  26. flash[:error] = "Please login"
  27. redirect_to new_session_path
  28. end
  29. return false
  30. end
  31. current_user
  32. end
  33.  
  34. def current_user
  35. @current_user ||= if session[:user_id]
  36. User.find(session[:user_id])
  37. elsif cookies[:auth_token]
  38. user = User.find_by_auth_token(cookies[:auth_token])
  39. return false unless user
  40. session[:user_id] = user.id
  41. user
  42. elsif params[:token] && [Mime::RSS, Mime::ATOM].include?(request.format)
  43. User.find_by_rss_token(params[:token])
  44. elsif [Mime::ATOM, Mime::RSS, Mime::JSON, Mime::XML].include? request.format
  45. authenticate_with_http_basic {|e,p| User.authenticate_by_email_and_password(e,p)}
  46. else
  47. false
  48. end
  49. end
  50.  
  51. def current_account
  52. @current_account ||= if current_user
  53. if current_user.accounts.size == 1
  54. current_user.accounts.first
  55. elsif controller_name == "accounts" && params[:id]
  56. current_user.accounts.find(params[:id])
  57. elsif params[:account_id]
  58. current_user.accounts.find(params[:account_id])
  59. end
  60. end
  61. end
  62.  
  63. def current_account_user
  64. @current_account_user ||= if current_account
  65. current_account.account_users.find(:first, :conditions => {:user_id => current_user.id})
  66. else
  67. false
  68. end
  69. end
  70. end
  71. end
Add Comment
Please, Sign In to add comment