Sha256: 024ada2dc5c774d8f0af66466985cf9ea41c3b8d274520b9206162f2cc1fa363

Contents?: true

Size: 1.57 KB

Versions: 23

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

module Decidim
  module Admin
    # Controller that allows managing feature permissions.
    #
    class FeaturePermissionsController < Decidim::Admin::ApplicationController
      helper_method :authorizations, :feature

      def edit
        authorize! :update, feature
        @permissions_form = PermissionsForm.new(
          permissions: permission_forms
        )
      end

      def update
        authorize! :update, feature
        @permissions_form = PermissionsForm.from_params(params)

        UpdateFeaturePermissions.call(@permissions_form, feature) do
          on(:ok) do
            flash[:notice] = t("feature_permissions.update.success", scope: "decidim.admin")
            redirect_to features_path(current_participatory_space)
          end

          on(:invalid) do
            render action: :edit
          end
        end
      end

      private

      def permission_forms
        permissions = feature.permissions || {}

        @permission_forms ||= feature.manifest.actions.inject({}) do |result, action|
          form = PermissionForm.new(
            authorization_handler_name: permissions.dig(action, "authorization_handler_name"),
            options: permissions.dig(action, "options").try(:to_json)
          )

          result.update(action => form)
        end
      end

      def authorizations
        current_organization.available_authorizations.map(&:constantize).map(&:handler_name)
      end

      def feature
        @feature ||= current_participatory_space.features.find(params[:feature_id])
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 2 rubygems

Version Path
decidim-admin-0.7.4 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.7.3 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.7.2 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.7.1 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.7.0 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.6.8 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-0.6.8 decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.6.7 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-0.6.7 decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.6.6 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-0.6.6 decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.6.5 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-0.6.5 decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.6.4 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-0.6.4 decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.6.3 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-0.6.3 decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.6.2 app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-0.6.2 decidim-admin/app/controllers/decidim/admin/feature_permissions_controller.rb
decidim-admin-0.6.1 app/controllers/decidim/admin/feature_permissions_controller.rb