Sha256: c6a9cecd5602e4fbfe043b1179be852903f79cc1ad74cedd7a0023c389c23ca6

Contents?: true

Size: 1.14 KB

Versions: 54

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

module Decidim
  module Accountability
    module Admin
      class Permissions < Decidim::DefaultPermissions
        def permissions
          return permission_action if permission_action.scope != :admin

          permission_action.allow! if can_perform_actions_on?(:result, result)
          permission_action.allow! if can_perform_actions_on?(:status, status)
          permission_action.allow! if can_perform_actions_on?(:timeline_entry, timeline_entry)

          permission_action
        end

        private

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

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

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

        def can_perform_actions_on?(subject, resource)
          return unless permission_action.subject == subject

          case permission_action.action
          when :create
            true
          when :update, :destroy
            resource.present?
          else
            false
          end
        end
      end
    end
  end
end

Version data entries

54 entries across 54 versions & 1 rubygems

Version Path
decidim-accountability-0.27.0.rc1 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.26.2 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.26.1 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.26.0 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.26.0.rc2 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.26.0.rc1 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.25.2 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.25.1 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.25.0 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.25.0.rc4 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.25.0.rc3 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.25.0.rc2 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.25.0.rc1 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.24.3 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.23.6 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.24.2 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.23.5 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.24.1 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.24.0 app/permissions/decidim/accountability/admin/permissions.rb
decidim-accountability-0.24.0.rc2 app/permissions/decidim/accountability/admin/permissions.rb