class Recipes::Pundit
Public Instance Methods
ask()
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 2 def ask if get(:authentication).present? use_pundit = answer(:pundit) { Ask.confirm("Do you want to use Pundit for authorization?") } set(:authorization, use_pundit) end end
create()
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 9 def create if selected?(:authorization) run_pundit_installer recipe = self if selected?(:admin_mode) after(:admin_install) do recipe.install_admin_pundit end end end end
install()
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 22 def install run_pundit_installer active_admin = load_recipe(:admin) install_admin_pundit if active_admin.installed? end
install_admin_pundit()
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 33 def install_admin_pundit configure_active_admin_initializer copy_policies end
installed?()
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 29 def installed? gem_exists?(/pundit/) end
Private Instance Methods
config_active_admin_option(option, value)
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 53 def config_active_admin_option(option, value) initializer = "config/initializers/active_admin.rb" gsub_file initializer, /# config\.#{option} =[^\n]+\n/ do "config.#{option} = #{value}\n" end end
configure_active_admin_initializer()
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 40 def configure_active_admin_initializer config_active_admin_option("authorization_adapter", "ActiveAdmin::PunditAdapter") config_active_admin_option("pundit_default_policy", "'BackOffice::DefaultPolicy'") config_active_admin_option("pundit_policy_namespace", ":back_office") end
copy_policies()
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 46 def copy_policies copy_policy("default_policy") copy_policy("admin_user_policy") copy_policy("page_policy", "active_admin") copy_policy("comment_policy", "active_admin") end
copy_policy(policy_name, model_namespace = nil)
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 60 def copy_policy(policy_name, model_namespace = nil) destination_path = [model_namespace, policy_name].compact.join("/") template( "../assets/active_admin/policies/#{policy_name}.rb", "app/policies/back_office/#{destination_path}.rb" ) end
run_pundit_installer()
click to toggle source
# File lib/potassium/recipes/pundit.rb, line 68 def run_pundit_installer gather_gem 'pundit' after(:gem_install) do application_controller = "app/controllers/application_controller.rb" gsub_file application_controller, "protect_from_forgery" do "include Pundit\n protect_from_forgery" end generate "pundit:install" add_readme_section :internal_dependencies, :pundit end end