Sha256: 9da1bb139569d926730810bc6091e5a9dd7aff7c3a336b7686712a217d4e3b5a

Contents?: true

Size: 1.15 KB

Versions: 6

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Decidim
  module Votings
    class Permissions < Decidim::DefaultPermissions
      def permissions
        allowed_public_anonymous_action?

        return permission_action unless user

        return Decidim::Votings::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin

        # Delegate the polling_officer_zone permission checks to the polling officer zone permissions class
        return Decidim::Votings::PollingOfficerZone::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :polling_officer_zone

        permission_action
      end

      private

      def voting
        @voting ||= context.fetch(:voting, nil)
      end

      def allowed_public_anonymous_action?
        return unless permission_action.action == :read
        return unless permission_action.scope == :public

        case permission_action.subject
        when :votings
          allow!
        when :voting
          toggle_allow(voting.published? || user&.admin?)
        when :participatory_space
          allow!
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
decidim-elections-0.24.3 app/permissions/decidim/votings/permissions.rb
decidim-elections-0.24.2 app/permissions/decidim/votings/permissions.rb
decidim-elections-0.24.1 app/permissions/decidim/votings/permissions.rb
decidim-elections-0.24.0 app/permissions/decidim/votings/permissions.rb
decidim-elections-0.24.0.rc2 app/permissions/decidim/votings/permissions.rb
decidim-elections-0.24.0.rc1 app/permissions/decidim/votings/permissions.rb