]> git.openstreetmap.org Git - rails.git/blobdiff - app/abilities/api_capability.rb
Merge remote-tracking branch 'upstream/pull/4895'
[rails.git] / app / abilities / api_capability.rb
index 04d7fe10ab0953928a89c455b87761ae2c0ed173..f27dd2e63a515d0a0bf51571b6a49d6a5032c954 100644 (file)
@@ -11,29 +11,25 @@ class ApiCapability
                token.user
              end
 
-      can [:create, :comment, :close, :reopen], Note if scope?(token, :write_notes)
-      can [:show, :data], Trace if scope?(token, :read_gpx)
-      can [:create, :update, :destroy], Trace if scope?(token, :write_gpx)
-      can [:details], User if scope?(token, :read_prefs)
-      can [:gpx_files], User if scope?(token, :read_gpx)
-      can [:index, :show], UserPreference if scope?(token, :read_prefs)
-      can [:update, :update_all, :destroy], UserPreference if scope?(token, :write_prefs)
+      if user&.active?
+        can [:create, :comment, :close, :reopen], Note if scope?(token, :write_notes)
+        can [:show, :data], Trace if scope?(token, :read_gpx)
+        can [:create, :update, :destroy], Trace if scope?(token, :write_gpx)
+        can [:details], User if scope?(token, :read_prefs)
+        can [:gpx_files], User if scope?(token, :read_gpx)
+        can [:index, :show], UserPreference if scope?(token, :read_prefs)
+        can [:update, :update_all, :destroy], UserPreference if scope?(token, :write_prefs)
 
-      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)
-      end
+        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, 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)
-          can :redact, OldWay if scope?(token, :write_api)
-          can :redact, OldRelation if scope?(token, :write_api)
+        if user.moderator?
+          can [:destroy, :restore], ChangesetComment if scope?(token, :write_api)
+          can :destroy, Note if scope?(token, :write_notes)
+          can :redact, [OldNode, OldWay, OldRelation] if user&.terms_agreed? && (scope?(token, :write_api) || scope?(token, :write_redactions))
         end
       end
     end