Sha256: e271126c1b1300a7589bb485865d905b145b8d387846131037c33d2768e9f358

Contents?: true

Size: 1.63 KB

Versions: 15

Compression:

Stored size: 1.63 KB

Contents

# frozen_string_literal: true

module Entitlements
  class Plugins
    class PosixGroup < Entitlements::Plugins
      include ::Contracts::Core
      C = ::Contracts

      # Produce the override hash for an LDAP posixGroup.
      #
      # group         - Entitlements::Models::Group object
      # plugin_config - Additional configuration for the plugin
      # ldap          - Reference to the underlying Entitlements::Service::LDAP object
      #
      # Returns Hash with override settings.
      Contract Entitlements::Models::Group, C::HashOf[String => C::Any], Entitlements::Service::LDAP => C::HashOf[String => C::Any]
      def self.override_hash(group, _plugin_config, ldap)
        members = group.member_strings.map { |ms| ldap.person_dn_format.gsub("%KEY%", ms) }

        {
          "objectClass"  => "PosixGroup",
          "memberUid"    => members,
          "gidNumber"    => gid_number(group).to_s,
          "uniqueMember" => nil,
          "owner"        => nil
        }
      end

      # Get the gidNumber from the metadata in the group.
      #
      # group - Entitlements::Models::Group object
      #
      # Returns an Integer with the GID number of the group.
      Contract Entitlements::Models::Group => Integer
      def self.gid_number(group)
        unless group.metadata.key?("gid_number")
          raise ArgumentError, "POSIX Group #{group.dn} has no metadata setting for gid_number!"
        end

        result = group.metadata["gid_number"].to_i
        return result if result >= 1 && result < 65536
        raise ArgumentError, "POSIX Group #{group.dn} has GID #{result} out of 1-65535 range!"
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 2 rubygems

Version Path
entitlements-app-1.2.0 lib/entitlements/plugins/posix_group.rb
entitlements-app-1.1.0 lib/entitlements/plugins/posix_group.rb
entitlements-app-1.0.0 lib/entitlements/plugins/posix_group.rb
entitlements-app-0.3.4 lib/entitlements/plugins/posix_group.rb
entitlements-app-0.3.1 lib/entitlements/plugins/posix_group.rb
entitlements-app-0.3.0 lib/entitlements/plugins/posix_group.rb
entitlements-0.2.1 lib/entitlements/plugins/posix_group.rb
entitlements-app-0.2.1 lib/entitlements/plugins/posix_group.rb
entitlements-0.2.0 lib/entitlements/plugins/posix_group.rb
entitlements-app-0.2.0 lib/entitlements/plugins/posix_group.rb
entitlements-0.1.8 lib/entitlements/plugins/posix_group.rb
entitlements-app-0.1.8 lib/entitlements/plugins/posix_group.rb
entitlements-0.1.7 lib/entitlements/plugins/posix_group.rb
entitlements-app-0.1.7 lib/entitlements/plugins/posix_group.rb
entitlements-app-0.1.6 lib/entitlements/plugins/posix_group.rb