Sha256: 159607c0fbad9ced4072996ba175adaa37eeb75602228d5b5ef6ece7ed54bf77

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

# frozen_string_literal: true

module Decidim
  module Notify
    class Permissions < Decidim::DefaultPermissions
      def permissions
        return permission_action unless permission_action.subject.in? [:notes, :chapter]

        index_action?
        edit_action?

        permission_action
      end

      def index_action?
        return unless permission_action.action == :index

        component = context.fetch(:current_component)

        if component.settings.private
          return unless user

          participants = Author.for(component).pluck :decidim_user_id
          return allow! if participants.include? user.id
        elsif component.settings.restricted
          return allow! if user
        else
          allow!
        end
      end

      def edit_action?
        return unless user

        case permission_action.action
        when :create, :update, :destroy
          component = context.fetch(:current_component)

          note_takers = Author.for(component).note_takers.pluck :decidim_user_id
          return allow! if note_takers.include? user.id
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
decidim-notify-0.5 app/permissions/decidim/notify/permissions.rb
decidim-notify-0.4 app/permissions/decidim/notify/permissions.rb