asciinema.org/app/controllers/application_controller.rb

80 lines
1.6 KiB
Ruby
Raw Normal View History

2014-02-20 22:00:44 +00:00
require 'authentication/warden_authentication'
2011-11-23 20:46:18 +00:00
class ApplicationController < ActionController::Base
2014-02-20 22:00:44 +00:00
protect_from_forgery
2011-11-23 20:46:18 +00:00
2012-03-01 23:25:55 +00:00
class Unauthorized < Exception; end
2012-03-06 20:27:17 +00:00
class Forbidden < Exception; end
rescue_from ActiveRecord::RecordNotFound, :with => :not_found
2012-03-04 14:54:25 +00:00
rescue_from Unauthorized, :with => :unauthorized
2012-03-06 20:27:17 +00:00
rescue_from Forbidden, :with => :forbidden
2012-03-01 23:25:55 +00:00
2014-02-20 22:00:44 +00:00
helper_method :decorated_current_user
2014-02-20 22:00:44 +00:00
include WardenAuthentication
2013-10-22 17:16:18 +00:00
private
2014-02-20 22:00:44 +00:00
def decorated_current_user
current_user && current_user.decorate
2013-10-22 17:16:18 +00:00
end
2012-03-01 23:25:55 +00:00
def ensure_authenticated!
raise Unauthorized unless current_user
end
def omniauth_credentials
OmniAuthCredentials.new(request.env['omniauth.auth'])
end
2012-03-06 20:28:32 +00:00
def store_location
session[:return_to] = request.path
end
def get_stored_location
session.delete(:return_to)
end
2012-03-06 21:03:12 +00:00
def redirect_back_or_to(default, options = nil)
path = get_stored_location || default
2012-03-06 21:03:12 +00:00
if options
redirect_to path, options
else
redirect_to path
end
end
2012-03-06 20:27:17 +00:00
def forbidden
if request.xhr?
2012-03-06 20:27:17 +00:00
render :json => "Forbidden", :status => 403
else
2012-03-06 20:27:17 +00:00
redirect_to root_path, :alert => "This action is forbidden"
end
end
2012-03-04 14:54:25 +00:00
def unauthorized
if request.xhr?
render :json => "Unauthorized", :status => 401
else
store_location
2013-10-22 15:26:36 +00:00
redirect_to login_path, :notice => "Please sign in to proceed"
end
end
def not_found
respond_to do |format|
format.any do
render :text => 'Requested resource not found', :status => 404
end
format.html do
2012-07-25 18:24:20 +00:00
render 'application/not_found', :status => 404, :layout => 'application'
end
end
end
2014-02-20 22:00:44 +00:00
end