Created
February 28, 2014 09:58
-
-
Save jcreixell/9268372 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class ApplicationController < ActionController::Base | |
include ApplicationHelper | |
protect_from_forgery | |
before_filter :set_locale | |
before_filter :require_user | |
authorize_resource | |
helper :all | |
helper_method :current_user_session, :current_user, :current_company | |
before_filter :set_company, :set_system_message | |
before_filter :check_terms_and_condition, :except => [:tacupdate, :tac] | |
rescue_from CanCan::AccessDenied do | |
store_location | |
redirect_to root_path, :alert => t('no_permissions') | |
end | |
def set_system_message | |
@system_message ||= SystemMessage.for_pcp unless request.xhr? | |
end | |
private | |
def check_terms_and_condition | |
if request.get? && current_user && current_user.company | |
if current_user.company.tac_accepted_at < Time.parse(APP_CONFIG[:tac_updated_at]) | |
session[:redirect_back] = request.original_url | |
redirect_to '/tacupdate' | |
end | |
end | |
end | |
def current_user_session | |
return @current_user_session if defined?(@current_user_session) | |
user_session = UserSession.find | |
if user_session && user_session.record && user_session.record.activated_at.present? | |
@current_user_session = user_session | |
end | |
end | |
def current_user | |
return @current_user if defined?(@current_user) | |
return nil if current_user_session.nil? | |
user = current_user_session.record | |
@current_user = user.company.enabled? ? user : nil | |
end | |
def require_user | |
unless current_user | |
store_location | |
redirect_to login_path | |
end | |
end | |
def require_mediation_visible | |
unless current_company.mediation_visible? | |
redirect_to applications_path and return | |
end | |
end | |
def current_company | |
return @current_company if defined?(@current_company) | |
if current_user.account_manager_or_super_account_manager? | |
@current_company = Company.find_by_id(params[:company_id].to_i) || current_user.company | |
end | |
@current_company ||= current_user.company | |
end | |
def store_location | |
session[:return_to] = request.url | |
end | |
def redirect_back_or_default(default) | |
redirect_to(session[:return_to] || default) | |
session[:return_to] = nil | |
end | |
def default_url_options(options = {}) | |
options.merge({ :locale => I18n.locale, :company_id => params[:company_id]}) | |
end | |
def set_locale | |
# locales = ([params[:locale].presence] + user_preferred_languages).compact | |
locales = [params[:locale].presence].compact | |
locales.delete_if { |locale| !I18n.available_locales.include?(locale.to_sym) } | |
# save_language_choice(locale_to_use) if language_changed?(locale_to_use) | |
locale_to_use = locales.first || I18n.default_locale | |
I18n.locale = locale_to_use | |
end | |
def set_company | |
params[:company_id] = current_company.id if current_user | |
end | |
def user_saved_language | |
return nil if current_user.nil? | |
return @user_saved_language if defined?(@user_saved_language) | |
@user_saved_language ||= current_user.language | |
end | |
def language_changed?(lang) | |
return false if current_user.nil? | |
user_saved_language != lang | |
end | |
def save_language_choice(chosen_lang) | |
user = current_user | |
user.language = chosen_lang | |
user.save | |
end | |
def js_redirect_to(url, options = {}) | |
notice = options.delete(:notice) | |
flash[:notice] = notice if notice | |
render :js => "window.location.replace('#{url_for(url)}')" | |
end | |
def js_render_form(options = {}) | |
partial = options.delete(:partial) || 'form' | |
where = options.delete(:where) || '#modal_form' | |
locals = options.delete(:locals) || {} | |
render :js => "$(\"#{where}\").html(\"#{view_context.j(render_to_string partial: partial, locals: locals)}\");" | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment