lib/cms/fortress/application_controller_methods.rb
module Cms
module Fortress
module ApplicationControllerMethods
def after_sign_in_path_for(resource)
if resource.class.eql?(Cms::Fortress::User)
session[:site_id] = resource.site_id
#comfy_admin_cms_path
dashboard_site_path
else
begin
stored_location_for(resource) || send("after_sign_in_path_for_#{ resource.class.name.underscore }", resource)
rescue
raise "Cannot find `after_sign_in_path_for_#{ resource.class.name.underscore }` in your ApplicationController class."
end
end
end
def after_sign_out_path_for(resource_or_scope)
# request.referrer
if resource_or_scope.eql?(:cms_fortress_user)
# comfy_admin_cms_path
dashboard_site_path
else
begin
stored_location_for(resource_or_scope) || send("after_sign_out_path_for_#{ resource_or_scope.to_s }", resource_or_scope)
rescue
raise "Cannot find `after_sign_out_path_for_#{ resource.class.name.underscore }` in your ApplicationController class."
end
end
end
def ability_class
if defined?(Ability)
Ability
else
CmsAbility
end
end
def current_ability
@current_ability ||= ability_class.new(current_cms_fortress_user)
end
def self.included(base)
base.class_eval do
before_action :configure_permitted_parameters, if: :devise_controller?
rescue_from CanCan::AccessDenied do |ex|
# if cannot view page check if can on files
if controller_name.eql?('pages')
if can? :view, Comfy::Cms::File
redirect_to comfy_admin_cms_site_files_path
else
redirect_to cms_fortress_unauthorised_path
end
elsif controller_name.eql?('layouts')
if can? :view, Comfy::Cms::Snippet
redirect_to comfy_admin_cms_site_snippets_path
else
redirect_to cms_fortress_unauthorised_path
end
elsif controller_name.eql?('sites')
if can? :view, Cms::Fortress::Role
redirect_to cms_fortress_roles_path
else
redirect_to cms_fortress_unauthorised_path
end
else
redirect_to cms_fortress_unauthorised_path #, :alert => ex.message
end
end
protected
def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_in) { |u| u.permit(:email, :password, :remember_me, :site_id) }
end
end
end
end
end
end