]> git.openstreetmap.org Git - rails.git/commitdiff
Collect node/way/relation CanCanCan subjects into arrays
authorAnton Khorev <tony29@yandex.ru>
Wed, 13 Mar 2024 23:44:25 +0000 (02:44 +0300)
committerAnton Khorev <tony29@yandex.ru>
Wed, 13 Mar 2024 23:44:25 +0000 (02:44 +0300)
app/abilities/ability.rb
app/abilities/api_ability.rb
app/abilities/api_capability.rb

index ef4c0a778dc487dcadf7a5b014340599869d2c7d..547f9365e25a729c4e87379751b49da0f3faebe0 100644 (file)
@@ -5,9 +5,7 @@ class Ability
 
   def initialize(user)
     can [:relation, :relation_history, :way, :way_history, :node, :node_history, :query], :browse
 
   def initialize(user)
     can [:relation, :relation_history, :way, :way_history, :node, :node_history, :query], :browse
-    can [:show], OldNode
-    can [:show], OldWay
-    can [:show], OldRelation
+    can [:show], [OldNode, OldWay, OldRelation]
     can [:show, :new], Note
     can :search, :direction
     can [:index, :permalink, :edit, :help, :fixthemap, :offline, :export, :about, :communities, :preview, :copyright, :key, :id], :site
     can [:show, :new], Note
     can :search, :direction
     can [:index, :permalink, :edit, :help, :fixthemap, :offline, :export, :about, :communities, :preview, :copyright, :key, :id], :site
index 8ee280b3a116d2f464c9114b1c65f47b45d50d39..e20b849d11d96991f494be946776cd9ede66987b 100644 (file)
@@ -29,20 +29,14 @@ class ApiAbility
         if user.terms_agreed?
           can [:create, :update, :upload, :close, :subscribe, :unsubscribe], Changeset
           can :create, ChangesetComment
         if user.terms_agreed?
           can [:create, :update, :upload, :close, :subscribe, :unsubscribe], Changeset
           can :create, ChangesetComment
-          can [:create, :update, :delete], Node
-          can [:create, :update, :delete], Way
-          can [:create, :update, :delete], Relation
+          can [:create, :update, :delete], [Node, Way, Relation]
         end
 
         if user.moderator?
           can [:destroy, :restore], ChangesetComment
           can :destroy, Note
 
         end
 
         if user.moderator?
           can [:destroy, :restore], ChangesetComment
           can :destroy, Note
 
-          if user.terms_agreed?
-            can :redact, OldNode
-            can :redact, OldWay
-            can :redact, OldRelation
-          end
+          can :redact, [OldNode, OldWay, OldRelation] if user.terms_agreed?
         end
       end
     end
         end
       end
     end
index 95d7ab9ab92d2145b90f11373a69416aacc9f959..f27dd2e63a515d0a0bf51571b6a49d6a5032c954 100644 (file)
@@ -23,19 +23,13 @@ class ApiCapability
         if user.terms_agreed?
           can [:create, :update, :upload, :close, :subscribe, :unsubscribe], Changeset if scope?(token, :write_api)
           can :create, ChangesetComment if scope?(token, :write_api)
         if user.terms_agreed?
           can [:create, :update, :upload, :close, :subscribe, :unsubscribe], Changeset if scope?(token, :write_api)
           can :create, ChangesetComment if scope?(token, :write_api)
-          can [:create, :update, :delete], Node if scope?(token, :write_api)
-          can [:create, :update, :delete], Way if scope?(token, :write_api)
-          can [:create, :update, :delete], Relation if scope?(token, :write_api)
+          can [:create, :update, :delete], [Node, Way, Relation] if scope?(token, :write_api)
         end
 
         if user.moderator?
           can [:destroy, :restore], ChangesetComment if scope?(token, :write_api)
           can :destroy, Note if scope?(token, :write_notes)
         end
 
         if user.moderator?
           can [:destroy, :restore], ChangesetComment if scope?(token, :write_api)
           can :destroy, Note if scope?(token, :write_notes)
-          if user&.terms_agreed?
-            can :redact, OldNode if scope?(token, :write_api) || scope?(token, :write_redactions)
-            can :redact, OldWay if scope?(token, :write_api) || scope?(token, :write_redactions)
-            can :redact, OldRelation if scope?(token, :write_api) || scope?(token, :write_redactions)
-          end
+          can :redact, [OldNode, OldWay, OldRelation] if user&.terms_agreed? && (scope?(token, :write_api) || scope?(token, :write_redactions))
         end
       end
     end
         end
       end
     end