Sha256: 8c9495be24cfc9723b96f8bbf553705db601a8eadb6f08e164ace667f804e2b0

Contents?: true

Size: 1.27 KB

Versions: 20

Compression:

Stored size: 1.27 KB

Contents

module Dradis
  module Plugins
    module PersistentPermissions
      extend ActiveSupport::Concern

      def update
        @user = User.authors.find(params[:id])

        Permission.transaction do
          Permission.where(component: self.class.component_name, user_id: params[:id]).destroy_all

          permissions_params[:permissions]&.each do |permission|
            # Validate the permission being created is a valid value
            next unless self.class.permissions_validation.call(permission) if self.class.permissions_validation

            Permission.create!(
              component: self.class.component_name,
              name: permission,
              user_id: params[:id]
            )
          end
        end

        redirect_to main_app.edit_admin_user_permissions_path(params[:id]), notice: "#{@user.name}'s permissions have been updated."
      end

      private

      def permissions_params
        params.require(self.class.component_name).permit(permissions: [])
      end

      class_methods do
        attr_accessor :component_name, :permissions_validation

        def permissible_tool(component_name, opts = {})
          self.component_name = component_name
          self.permissions_validation = opts[:validation]
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
dradis-plugins-4.15.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.14.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.13.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.11.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.10.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.9.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.8.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.7.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.6.1 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.5.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.4.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.3.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.2.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.1.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-4.0.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-3.22.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-3.21.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-3.20.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-3.19.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb
dradis-plugins-3.18.0 app/controllers/concerns/dradis/plugins/persistent_permissions.rb