From: Anton Khorev Date: Wed, 13 Mar 2024 23:44:25 +0000 (+0300) Subject: Collect node/way/relation CanCanCan subjects into arrays X-Git-Tag: live~712^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/511ce4ab89c4f3dfb5c08d2fea9c9743c31793ea Collect node/way/relation CanCanCan subjects into arrays --- diff --git a/app/abilities/ability.rb b/app/abilities/ability.rb index ef4c0a778..547f9365e 100644 --- a/app/abilities/ability.rb +++ b/app/abilities/ability.rb @@ -5,9 +5,7 @@ class Ability 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 diff --git a/app/abilities/api_ability.rb b/app/abilities/api_ability.rb index 8ee280b3a..e20b849d1 100644 --- a/app/abilities/api_ability.rb +++ b/app/abilities/api_ability.rb @@ -29,20 +29,14 @@ class ApiAbility 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 - 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 diff --git a/app/abilities/api_capability.rb b/app/abilities/api_capability.rb index 95d7ab9ab..f27dd2e63 100644 --- a/app/abilities/api_capability.rb +++ b/app/abilities/api_capability.rb @@ -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) - 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) - 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