application_controller.rb revision b273295144399944a00c71d72f3d5d0d7695942c
f79d43bbe70a01454049b77d6f15f6369744959eStéphane Graberclass ApplicationController < ActionController::Base
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano protect_from_forgery
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano ensure_security_headers
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano include Pagination
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano include PathHelpers
9afe19d634946d50eab30e3b90cb5cebcde39eeaDaniel Lezcano include ApplicationHelper
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano # CanCan Authorization
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano rescue_from CanCan::AccessDenied do |exception|
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano if request.format.html?
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano redirect_to root_url, alert: exception.message
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano else
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano render \
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano status: :forbidden,
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano content_type: 'text/plain',
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano text: exception.message
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
250b1eec71b074acdff1c5f6b5a1f0d7d2c20b77Stéphane Graber if defined? PG
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano # A foreign key constraint exception from the database
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano rescue_from PG::Error do |exception|
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano message = exception.message
7f95145833bb24f54e037f73ecc37444d6635697Dwight Engen if message.include?('foreign key constraint')
99e4008cad9e959b683c6f48411fcf15a92be3b5Michel Normand logger.warn(message)
10fba81b9d0221b8e47aa1e0b43236413b7d28dfMichel Normand # shorten the message
99e4008cad9e959b683c6f48411fcf15a92be3b5Michel Normand message = message.match(/DETAIL: .+/).to_s
99e4008cad9e959b683c6f48411fcf15a92be3b5Michel Normand
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano redirect_to :back,
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano flash: {error: "Whatever you tried to do - the server is unable to process your request because of a foreign key constraint. (#{message})" }
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano else
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano # anything else
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano raise exception
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano protected
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano def authenticate_admin!
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano unless admin?
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano flash[:error] = 'you need admin privileges for this action'
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano redirect_to :root
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano def after_sign_in_path_for(resource)
b4578c5b380130a41a69b5b49c970157acaf1dbbDwight Engen request.referrer
b4578c5b380130a41a69b5b49c970157acaf1dbbDwight Engen end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano def after_sign_out_path_for(resource)
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano request.referrer
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano end
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcanoend
d823d5b966f49d975a09a8512d084389d6d7ffc7dlezcano