Sha256: d7d056f85750c2a4cec70d7ba5e29f2709ec5533d4405c251a609229ebb85769

Contents?: true

Size: 796 Bytes

Versions: 4

Compression:

Stored size: 796 Bytes

Contents

# frozen_string_literal: true

module Decidim
  module Sortitions
    class Permissions < Decidim::DefaultPermissions
      def permissions
        allow_embed_sortition?
        return permission_action unless user

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

        permission_action
      end

      private

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

      # As this is a public action, we need to run this before other checks
      def allow_embed_sortition?
        return unless permission_action.action == :embed && permission_action.subject == :sortition && sortition

        allow!
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
decidim-sortitions-0.27.9 app/permissions/decidim/sortitions/permissions.rb
decidim-sortitions-0.27.8 app/permissions/decidim/sortitions/permissions.rb
decidim-sortitions-0.27.7 app/permissions/decidim/sortitions/permissions.rb
decidim-sortitions-0.27.6 app/permissions/decidim/sortitions/permissions.rb