impress/app/controllers/application_controller.rb

59 lines
1.4 KiB
Ruby
Raw Normal View History

2010-05-14 15:12:31 -07:00
class ApplicationController < ActionController::Base
include FragmentLocalization
2010-05-14 15:12:31 -07:00
protect_from_forgery
2011-06-27 12:33:34 -07:00
helper_method :can_use_image_mode?, :user_is?
before_filter :set_locale
2011-06-27 12:33:34 -07:00
2011-07-12 21:25:14 -07:00
def authenticate_user! # too lazy to change references to login_path
redirect_to(login_path) unless user_signed_in?
end
def authorize_user!
raise AccessDenied unless user_signed_in? && current_user.id == params[:user_id].to_i
end
2011-06-27 12:33:34 -07:00
def can_use_image_mode?
2011-08-07 16:52:11 -07:00
true
2011-06-27 12:33:34 -07:00
end
# This locale-inferrence method is designed for debugging. Once we're ready
# for production, we'll probably start inferring from domain.
def infer_locale
inference = params[:locale]
inference if inference && I18n.available_locales.include?(inference.to_sym)
end
def localized_fragment_exist?(key)
localized_key = localize_fragment_key(key, locale)
fragment_exist?(localized_key)
end
def not_found(record_name='record')
raise ActionController::RoutingError.new("#{record_name} not found")
end
class AccessDenied < StandardError;end
rescue_from AccessDenied, :with => :on_access_denied
def on_access_denied
render :file => 'public/403.html', :layout => false, :status => :forbidden
end
2011-07-20 12:16:22 -07:00
def redirect_back!(default=:back)
redirect_to(params[:return_to] || default)
end
def set_locale
I18n.locale = infer_locale || I18n.default_locale
end
2011-07-20 12:16:22 -07:00
def user_is?(user)
user_signed_in? && user == current_user
end
2010-05-14 15:12:31 -07:00
end
2011-06-27 12:33:34 -07:00