Sha256: 4631adbcac650bd59245592c21ebbf5a6d3b2cd2630c3899dfa6a09a71b0264e

Contents?: true

Size: 847 Bytes

Versions: 11

Compression:

Stored size: 847 Bytes

Contents

# frozen_string_literal: true
module Decidim
  module Admin
    # This form handles permissions for a particular action in the admin panel.
    class PermissionForm < Form
      attribute :authorization_handler_name, String
      attribute :options, String

      validate :sanitize
      validate :options_is_valid_json

      private

      def sanitize
        self.authorization_handler_name = nil if authorization_handler_name.blank?
        self.options = nil if authorization_handler_name.blank?
        self.options = nil if options.blank?
      end

      def options_is_valid_json
        return unless options

        result = JSON.parse(options)
        errors.add(:options, :invalid_json) unless result.is_a?(Hash)
        result
      rescue JSON::ParserError
        errors.add(:options, :invalid_json)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
decidim-admin-0.1.0 app/forms/decidim/admin/permission_form.rb
decidim-0.1.0 decidim-admin/app/forms/decidim/admin/permission_form.rb
decidim-admin-0.0.8.1 app/forms/decidim/admin/permission_form.rb
decidim-0.0.8.1 decidim-admin/app/forms/decidim/admin/permission_form.rb
decidim-admin-0.0.7 app/forms/decidim/admin/permission_form.rb
decidim-0.0.7 decidim-admin/app/forms/decidim/admin/permission_form.rb
decidim-admin-0.0.6 app/forms/decidim/admin/permission_form.rb
decidim-0.0.6 decidim-admin/app/forms/decidim/admin/permission_form.rb
decidim-admin-0.0.5 app/forms/decidim/admin/permission_form.rb
decidim-0.0.5 decidim-admin/app/forms/decidim/admin/permission_form.rb
decidim-0.0.4 decidim-admin/app/forms/decidim/admin/permission_form.rb