Files
growstuff/app/controllers/application_controller.rb
Taylor Griffin 0ffe9adc86 tests are green
2014-11-16 21:40:43 +11:00

55 lines
1.6 KiB
Ruby

class ApplicationController < ActionController::Base
protect_from_forgery
include ApplicationHelper
after_filter :store_location
before_filter :set_locale
def store_location
if (request.path != "/members/sign_in" &&
request.path != "/members/sign_up" &&
request.path != "/members/password/new" &&
request.path != "/members/password/edit" &&
request.path != "/members/confirmation" &&
request.path != "/members/sign_out" &&
!request.xhr?)
store_location_for(:member, request.fullpath)
end
end
def after_sign_in_path_for(resource)
stored_location_for(:member) || root_path
end
# tweak CanCan defaults because we don't have a "current_user" method
# this means that we use current_user in specs but current_member everywhere
# else in the code.
def current_ability
@current_ability ||= Ability.new(current_member)
end
# CanCan error handling
rescue_from CanCan::AccessDenied do |exception|
redirect_to request.referer || root_url, :alert => exception.message
end
def set_locale
I18n.locale = params[:locale] || extract_locale_from_subdomain || I18n.default_locale
end
def extract_locale_from_subdomain
parsed_locale = request.subdomains.first
I18n.available_locales.map(&:to_s).include?(parsed_locale) ? parsed_locale : nil
end
before_action :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:login_name, :email, :password, :password_confirmation, :tos_agreement, :newsletter) }
end
end