簡體   English   中英

基於AdminUser模型限制ActiveAdmin的download_links

[英]Limiting download_links for ActiveAdmin based on AdminUser model

我試圖基於“限制”字段限制誰可以訪問csv / json / ...在ActiveAdmin中導出。 我想a)隱藏鏈接,b)如果路徑仍然被命中,則什么也不返回

我嘗試了以下方法:

index downloads_links: !current_admin_user.limited? do
  # ...
end

以及

csv do
  return if current_admin_user.limited?
  # ...
end

我也曾短暫地嘗試使用procs和lambda,但這可能不是這里的解決方案?

似乎都無法正常工作,並分別給我在ActiveAdmin :: DSLResource和ActiveAdmin :: CSVBuilder上的nomethoderrors

歡迎任何提示,謝謝

我能夠通過一個簡單的猴子補丁來實現這一目標,但是我使用的是康康舞。 康康助手方法“可以嗎?” 工作正常,但我沒有測試“ current_admin_user”。 請嘗試

module ActiveAdmin
  module Views
    class PaginatedCollection
      def build_download_format_links(formats = self.class.formats)
        params = request.query_parameters.except :format, :commit
        links = formats.map { |format| link_to format.to_s.upcase, params: params, format: format }
        unless current_admin_user.limited?
          div :class => "download_links" do
            text_node [I18n.t('active_admin.download'), links].flatten.join(" ").html_safe
          end
        end
      end
    end
  end
end

upd:我已經嘗試過使用current_admin_user,並且有效。

另外,如果您需要限制格式,則可以使用“受限”方法在此模塊中重新定義格式方法:

module ActiveAdmin
    module Views
        class PaginatedCollection
            def formats
                if current_admin_user.limited?
                    @formats ||= [:csv] # anything you need for limited users
                else
                    @formats ||= [:csv, :xml, :json]
                end

                @formats.clone
            end
        end
    end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM