podemos-info/participa2

View on GitHub
decidim-module-gravity_forms/app/permissions/decidim/gravity_forms/permissions.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module Decidim
  module GravityForms
    class Permissions < Decidim::DefaultPermissions
      def permissions
        # Delegate the admin permission checks to the admin permissions class
        return Decidim::GravityForms::Admin::Permissions.new(user, permission_action, context).permissions if permission_action.scope == :admin

        return permission_action if permission_action.scope != :public

        return permission_action if permission_action.subject != :gravity_form

        case permission_action.action
        when :fill_in
          toggle_allow(can_fill_in?)
        end

        permission_action
      end

      private

      def can_fill_in?
        authorized?(:fill_in, resource: gravity_form)
      end

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