app/permissions/decidim/consultations/permissions.rb in decidim-consultations-0.18.1 vs app/permissions/decidim/consultations/permissions.rb in decidim-consultations-0.19.0

- old
+ new

@@ -5,10 +5,11 @@ class Permissions < Decidim::DefaultPermissions def permissions allowed_public_anonymous_action? return permission_action unless user + allowed_public_action? return Decidim::Consultations::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin permission_action @@ -22,10 +23,16 @@ def consultation @consultation ||= context.fetch(:consultation, nil) end + def authorized?(permission_action, resource: nil) + return unless resource || question + + ActionAuthorizer.new(user, permission_action, question, resource).authorize.ok? + end + def allowed_public_anonymous_action? return unless permission_action.action == :read return unless permission_action.scope == :public case permission_action.subject @@ -39,9 +46,12 @@ end def allowed_public_action? return unless permission_action.scope == :public return unless permission_action.subject == :question + + # check if question has been limited by admins first + return unless authorized? :vote case permission_action.action when :vote toggle_allow(question.can_be_voted_by?(user)) when :unvote