瀏覽代碼

Added per query permissions hook

Andrew Kane 8 年之前
父節點
當前提交
7b46b1cf7e
共有 3 個文件被更改,包括 5 次插入2 次删除
  1. 3 1
      app/models/blazer/query.rb
  2. 1 1
      app/views/blazer/queries/_form.html.erb
  3. 1 0
      lib/blazer.rb

+ 3 - 1
app/models/blazer/query.rb

@@ -19,7 +19,9 @@ module Blazer
     end
 
     def editable?(user)
-      (name.present? && name.first != "*") || user == creator
+      editable = !persisted? || (name.present? && name.first != "*") || user == creator
+      editable &&= Blazer.query_editable.call(self, user) if Blazer.query_editable
+      editable
     end
   end
 end

+ 1 - 1
app/views/blazer/queries/_form.html.erb

@@ -15,7 +15,7 @@
         <div class="pull-left" style="margin-top: 6px;">
           <%= link_to "Back", :back %>
         </div>
-        <%= f.select :data_source, Blazer.data_sources.values.map { |ds| [ds.name, ds.id] }, {}, class: ("hide" if Blazer.data_sources.size == 1), style: "width: 140px;" %>
+        <%= f.select :data_source, Blazer.data_sources.values.select { |ds| q = @query.dup; q.data_source = ds.id; q.editable?(blazer_user) }.map { |ds| [ds.name, ds.id] }, {}, class: ("hide" if Blazer.data_sources.size == 1), style: "width: 140px;" %>
         <div id="tables" style="display: inline-block; width: 260px; margin-right: 10px;" class="hide">
           <%= render partial: "tables" %>
         </div>

+ 1 - 0
lib/blazer.rb

@@ -31,6 +31,7 @@ module Blazer
     attr_accessor :anomaly_checks
     attr_accessor :async
     attr_accessor :images
+    attr_accessor :query_editable
   end
   self.audit = true
   self.user_name = :name