app/controllers/foreman_salt/salt_keys_controller.rb



module ForemanSalt
  class SaltKeysController < ::ForemanSalt::ApplicationController
    def index
      @proxy = find_proxy

      Rails.cache.delete("saltkeys_#{@proxy.id}") if params[:expire_cache] == 'true'
      keys = if params[:state].blank?
               SmartProxies::SaltKeys.all @proxy
             else
               SmartProxies::SaltKeys.find_by_state @proxy, params[:state].downcase
             end
      @keys = keys.sort.paginate :page => params[:page], :per_page => Setting[:entries_per_page]
    end

    def accept
      @proxy = find_proxy(:edit_smart_proxies_salt_keys)
      key = SmartProxies::SaltKeys.find(@proxy, params[:salt_key_id])
      if key.accept
        process_success(:success_redirect => hash_for_smart_proxy_salt_keys_path(:state => params[:state], :expire_cache => true),
                        :success_msg => _("Key accepted for #{key}"), :object_name => key.to_s)
      else
        process_error(:redirect => hash_for_smart_proxy_salt_keys_path(:state => params[:state], :expire_cache => true))
      end
    end

    def reject
      @proxy = find_proxy(:edit_smart_proxies_salt_keys)
      key = SmartProxies::SaltKeys.find(@proxy, params[:salt_key_id])
      if key.reject
        process_success(:success_redirect => hash_for_smart_proxy_salt_keys_path(:state => params[:state], :expire_cache => true),
                        :success_msg => _("Key rejected for #{key}"), :object_name => key.to_s)
      else
        process_error(:redirect => hash_for_smart_proxy_salt_keys_path(:state => params[:state], :expire_cache => true))
      end
    end

    def destroy
      @proxy = find_proxy(:destroy_smart_proxies_salt_keys)
      key = SmartProxies::SaltKeys.find(@proxy, params[:id])
      if key.delete
        process_success(:success_redirect => hash_for_smart_proxy_salt_keys_path(:state => params[:state], :expire_cache => true),
                        :success_msg => _("Key deleted for #{key}"), :object_name => key.to_s)
      else
        process_error(:redirect => hash_for_smart_proxy_salt_keys_path(:state => params[:state], :expire_cache => true))
      end
    end

    private

    def controller_permission
      'smart_proxies_salt_keys'
    end

    def find_proxy(permission = :view_smart_proxies_salt_keys)
      SmartProxy.authorized(permission).find(params[:smart_proxy_id])
    end
  end
end